UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ChaosSolverActor.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
7#include "CoreMinimal.h"
12#include "Chaos/ChaosSolver.h"
17#include "SolverEventFilters.h"
20
21#include "ChaosSolverActor.generated.h"
22
24
25namespace Chaos
26{
27 template<typename, int>
28 class TGeometryParticle;
29}
30
32UENUM()
44
45USTRUCT()
47{
49
50 FChaosDebugSubstepControl() : bPause(false), bSubstep(false), bStep(false) {}
51
52 /*
53 * Pause the solver at the next synchronization point.
54 */
55 UPROPERTY(EditAnywhere, Category = "ChaosPhysics|Debug")
56 bool bPause;
57
58 /*
59 * Substep the solver to the next synchronization point.
60 */
61 UPROPERTY(EditAnywhere, Category = "ChaosPhysics|Debug", meta = (EditCondition = "bPause"))
62 bool bSubstep;
63
64 /*
65 * Step the solver to the next synchronization point.
66 */
67 UPROPERTY(EditAnywhere, Category = "ChaosPhysics|Debug", meta = (EditCondition = "bPause"))
68 bool bStep;
69
70#if WITH_EDITOR
71 FSimpleDelegate OnPauseChanged; // Delegate used to refresh the Editor's details customization when the pause value changed.
72#endif
73};
74
75USTRUCT(BlueprintType)
77{
79
82 virtual ~FDataflowRigidSolverProxy() override = default;
83
84 //~ Begin FPhysicsSolverInterface interface
85 virtual void AdvanceSolverDatas(const float DeltaTime) override;
86 virtual bool IsValid() const override { return Solver != nullptr;}
87 virtual const UScriptStruct* GetScriptStruct() const override
88 {
89 return StaticStruct();
90 }
91 //~ End FPhysicsSolverInterface interface
92
94 Chaos::FPhysicsSolver* Solver = nullptr;
95
98};
99
100template <>
102{
103 enum { WithCopy = false };
104};
105
106UCLASS(MinimalAPI)
108{
110
111public:
112
113 UPROPERTY(EditAnywhere, Category = "Chaos", meta=(ShowOnlyInnerProperties))
115
117 UPROPERTY()
118 float TimeStepMultiplier_DEPRECATED;
119 UPROPERTY()
120 int32 CollisionIterations_DEPRECATED;
121 UPROPERTY()
122 int32 PushOutIterations_DEPRECATED;
123 UPROPERTY()
124 int32 PushOutPairIterations_DEPRECATED;
125 UPROPERTY()
126 float ClusterConnectionFactor_DEPRECATED;
127 UPROPERTY()
128 EClusterConnectionTypeEnum ClusterUnionConnectionType_DEPRECATED;
129 UPROPERTY()
130 bool DoGenerateCollisionData_DEPRECATED;
131 UPROPERTY()
132 FSolverCollisionFilterSettings CollisionFilterSettings_DEPRECATED;
133 UPROPERTY()
134 bool DoGenerateBreakingData_DEPRECATED;
135 UPROPERTY()
136 FSolverBreakingFilterSettings BreakingFilterSettings_DEPRECATED;
137 UPROPERTY()
138 bool DoGenerateTrailingData_DEPRECATED;
139 UPROPERTY()
140 FSolverTrailingFilterSettings TrailingFilterSettings_DEPRECATED;
141 UPROPERTY()
142 float MassScale_DEPRECATED;
145 UPROPERTY(EditAnywhere, Category = Settings)
146 bool bHasFloor;
147
148 UPROPERTY(EditAnywhere, Category=Settings)
149 float FloorHeight;
150
151 /*
152 * Control to pause/step/substep the solver to the next synchronization point.
153 */
154 UPROPERTY(EditAnywhere, Category = "ChaosPhysics|Debug")
155 FChaosDebugSubstepControl ChaosDebugSubstepControl;
156
158 UFUNCTION(BlueprintCallable, Category = "ChaosPhysics")
159 CHAOSSOLVERENGINE_API void SetAsCurrentWorldSolver();
160
162 UFUNCTION(BlueprintCallable, Category = "ChaosPhysics")
163 CHAOSSOLVERENGINE_API virtual void SetSolverActive(bool bActive);
164
165 //~ Begin IDataflowPhysicsSolverInterface interface
166 virtual FString GetSimulationName() const override {return GetName();};
167 virtual FDataflowSimulationAsset& GetSimulationAsset() override {return SimulationAsset;};
168 virtual const FDataflowSimulationAsset& GetSimulationAsset() const override {return SimulationAsset;};
169 virtual FDataflowSimulationProxy* GetSimulationProxy() override {return &RigidSolverProxy;}
170 virtual const FDataflowSimulationProxy* GetSimulationProxy() const override {return &RigidSolverProxy;}
171 CHAOSSOLVERENGINE_API virtual void BuildSimulationProxy() override;
172 CHAOSSOLVERENGINE_API virtual void ResetSimulationProxy() override;
173 CHAOSSOLVERENGINE_API virtual void WriteToSimulation(const float DeltaTime, const bool bAsyncTask) override;
174 CHAOSSOLVERENGINE_API virtual void ReadFromSimulation(const float DeltaTime, const bool bAsyncTask) override;
175 //~ End IDataflowPhysicsSolverInterface interface
176
177 /*
178 * Display icon in the editor
179 */
180 UPROPERTY()
182
183 UChaosGameplayEventDispatcher* GetGameplayEventDispatcher() const { return GameplayEventDispatcherComponent; };
184
185 TSharedPtr<FPhysScene_Chaos> GetPhysicsScene() const { return PhysScene; }
186 Chaos::FPhysicsSolver* GetSolver() const { return RigidSolverProxy.Solver; }
187
188 CHAOSSOLVERENGINE_API virtual void PostRegisterAllComponents() override;
189 CHAOSSOLVERENGINE_API virtual void PreInitializeComponents() override;
190 CHAOSSOLVERENGINE_API virtual void PostUnregisterAllComponents() override;
191
192 CHAOSSOLVERENGINE_API virtual void BeginPlay() override;
193 CHAOSSOLVERENGINE_API virtual void EndPlay(const EEndPlayReason::Type ReasonEnd) override;
194
196#if WITH_EDITOR
197 CHAOSSOLVERENGINE_API virtual void PostEditChangeProperty(struct FPropertyChangedEvent& PropertyChangedEvent) override;
198 CHAOSSOLVERENGINE_API virtual bool CanEditChange(const FProperty* InProperty) const override;
199#endif
200 CHAOSSOLVERENGINE_API void PostLoad() override;
201 CHAOSSOLVERENGINE_API void Serialize(FArchive& Ar) override;
202 CHAOSSOLVERENGINE_API void PostDuplicate(EDuplicateMode::Type DuplicateMode) override;
205private:
206
207 /* Solver dataflow asset used to advance in time */
208 UPROPERTY(EditAnywhere, Category = "Physics", meta=(EditConditionHides), AdvancedDisplay)
209 FDataflowSimulationAsset SimulationAsset;
210
212 CHAOSSOLVERENGINE_API void MakeFloor();
213
215
217 FDataflowRigidSolverProxy RigidSolverProxy;
218
220 void MigrateSolver() const;
221
223 UPROPERTY()
224 TObjectPtr<UChaosGameplayEventDispatcher> GameplayEventDispatcherComponent;
225
227 Chaos::FSingleParticlePhysicsProxy* Proxy;
228};
EClusterConnectionTypeEnum
Definition ChaosSolverActor.h:34
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
const bool
Definition NetworkReplayStreaming.h:178
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define UFUNCTION(...)
Definition ObjectMacros.h:745
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
UScriptStruct * StaticStruct()
Definition ReflectedTypeAccessors.h:18
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition Actor.h:257
Definition ChaosSolverActor.h:108
Chaos::FPhysicsSolver * GetSolver() const
Definition ChaosSolverActor.h:186
virtual FDataflowSimulationProxy * GetSimulationProxy() override
Definition ChaosSolverActor.h:169
virtual const FDataflowSimulationAsset & GetSimulationAsset() const override
Definition ChaosSolverActor.h:168
TSharedPtr< FPhysScene_Chaos > GetPhysicsScene() const
Definition ChaosSolverActor.h:185
virtual const FDataflowSimulationProxy * GetSimulationProxy() const override
Definition ChaosSolverActor.h:170
virtual FDataflowSimulationAsset & GetSimulationAsset() override
Definition ChaosSolverActor.h:167
Definition PBDRigidsSolver.h:84
Definition Archive.h:1208
Definition UnrealType.h:174
Definition DataflowPhysicsSolver.h:47
Definition Array.h:670
Definition SharedPointer.h:692
Definition ChaosGameplayEventDispatcher.h:81
Definition Class.h:1720
Definition SkeletalMeshComponent.h:307
Type
Definition UObjectGlobals.h:128
Type
Definition EngineTypes.h:3431
@ false
Definition radaudio_common.h:23
@ DelaunayTriangulation
Definition ClusterCreationParameters.h:18
@ BoundsOverlapFilteredDelaunayTriangulation
Definition ClusterCreationParameters.h:21
@ PointImplicit
Definition ClusterCreationParameters.h:17
@ MinimalSpanningSubsetDelaunayTriangulation
Definition ClusterCreationParameters.h:19
@ PointImplicitAugmentedWithMinimalDelaunay
Definition ClusterCreationParameters.h:20
@ None
Definition ClusterCreationParameters.h:22
Definition ChaosSolverActor.h:47
Definition ChaosSolverConfiguration.h:52
Definition DataflowPhysicsSolver.h:15
Definition ChaosSolverActor.h:77
virtual ~FDataflowRigidSolverProxy() override=default
virtual const UScriptStruct * GetScriptStruct() const override
Definition ChaosSolverActor.h:87
virtual bool IsValid() const override
Definition ChaosSolverActor.h:86
Definition DataflowSimulationInterface.h:20
Definition DataflowSimulationProxy.h:15
Definition UnrealType.h:6865
Definition SolverEventFilters.h:73
Definition SolverEventFilters.h:43
Definition SolverEventFilters.h:14
Definition ObjectPtr.h:488
Definition StructOpsTypeTraits.h:11
@ WithCopy
Definition StructOpsTypeTraits.h:17
Definition StructOpsTypeTraits.h:46