#pragma once #include "CoreMinimal.h" #include "UObject/NoExportTypes.h" #include "Projectile.h" #include "RevertToNormalDelegate.h" #include "TerrainModifyingProjectile.generated.h" class UStaticMesh; class UTerrainMaterial; UCLASS(Blueprintable) class ATerrainModifyingProjectile : public AProjectile { GENERATED_BODY() public: UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FRevertToNormal OnRevertToNormal; protected: UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UTerrainMaterial* Terrain; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) UTerrainMaterial* OriginalGroundMaterial; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UStaticMesh* CarveMesh; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) FVector CarveMeshScale; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) FVector LastHitLocation; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float Radius; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) bool Revert; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float TimeOnGround; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float ExpensiveCarveNoise; public: ATerrainModifyingProjectile(); UFUNCTION(BlueprintCallable) void Tick(float DeltaSeconds); UFUNCTION(BlueprintCallable, BlueprintPure) float GetRadius() const; UFUNCTION(BlueprintCallable) void BeginPlay(); };