36#pragma region Lifecycle
40 virtual UBodySetup* GetBodySetup()
override;
43 virtual void OnCreatePhysicsState()
override;
48#pragma region Collision
64 void TryUpdateCollision(
const TArray<uint64>& VoxelBitArray,
const FIntVector& GridResolution,
float VoxelSize, int32 ActiveVoxelNum,
float SyncTime,
bool bForce =
false);
70 void ResetCollision();
73 UPROPERTY(EditAnywhere, Category =
"IVSmoke | Config")
74 bool bCollisionEnabled = true;
77 UPROPERTY(EditAnywhere, Category = "
IVSmoke | Config", meta = (EditCondition = "bCollisionEnabled", ClampMin = "1", UIMin = "10", UIMax = "1000"))
78 int32 MinCollisionUpdateVoxelNum = 50;
81 UPROPERTY(EditAnywhere, Category = "
IVSmoke | Config", meta = (EditCondition = "bCollisionEnabled", ClampMin = "0.0", UIMax = "2.0"))
82 float MinCollisionUpdateInterval = 0.25f;
91 void UpdateCollision(const TArray<uint64>& VoxelBitArray, const FIntVector& GridResolution,
float VoxelSize);
94 void FinalizePhysicsUpdate();
98 TObjectPtr<UBodySetup> VoxelBodySetup;
101 float LastSyncTime = 0.0f;
104 int32 LastActiveVoxelNum = 0;
115 void DrawDebugVisualization()
const;
121 UPROPERTY(EditAnywhere, Category =
"IVSmoke | Debug")
122 bool bDebugEnabled = false;