UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ImmediatePhysicsSimulation_Chaos.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
8
10#include "Engine/EngineTypes.h"
11#include "Templates/UniquePtr.h"
13
14namespace Chaos
15{
16 class FPBDJointSettings;
17 class FPBDJointSolverSettings;
18 class FPBDCollisionSolverSettings;
19 class FCollisionDetectorSettings;
20 class FSimulationSpaceSettings;
21}
22
24{
27 {
28 public:
31
33
36
37 UE_DEPRECATED(5.6, "Use CreateActor with FActorSetup")
39
40 UE_DEPRECATED(5.6, "Use CreateActor with FActorSetup")
42
43 UE_DEPRECATED(5.6, "Use CreateActor with FActorSetup")
45
46 UE_DEPRECATED(5.6, "Use CreateActor with FActorSetup")
48
50
51 ENGINE_API void DestroyActor(FActorHandle* ActorHandle);
52
54
55 ENGINE_API void SetIsKinematic(FActorHandle* ActorHandle, bool bKinematic);
56
57 ENGINE_API void SetEnabled(FActorHandle* ActorHandle, bool bEnable);
58
60
62 UE_DEPRECATED(5.6, "Use CreateActor with FJointSetup")
64
67
69
72
79
82
85
88
93 ENGINE_API void SetRewindVelocities(bool bRewindVelocities);
94
104
112
114 const FTransform& Transform);
115
117 const FTransform& Transform,
118 const FVector& LinearVel,
119 const FVector& AngularVel,
120 const FVector& LinearAcc,
121 const FVector& AngularAcc);
122
124 const bool bEnabled,
125 const FReal DampingAlpha,
126 const FVector& ExternalLinearEtherDrag);
127
129
131 const Chaos::FSimulationSpaceSettings& SimulationSpaceSettings);
132
134
136
139 const FReal FixedDt,
140 const FReal CullDistance,
141 const FReal MaxDepenetrationVelocity,
143 const int32 PositionIts,
144 const int32 VelocityIts,
145 const int32 ProjectionIts,
146 const int32 bUseManifolds);
147
148 // Additional settings for less commonly adjusted parameters. As in SetSolverSettings,
149 // invalid (negative) values will leave that value unchanged from the default.
151 ENGINE_API void SetMaxNumRollingAverageStepTimes(const int32 MaxNumRollingAverageStepTimes);
152
153 // Sets whether or not to use the minimum step time, which is itself set with a cvar p.Chaos.ImmPhys.MinStepTime
156
157 // Sets whether or not to use the fixed timestep tolerance for rewinding, which is itself set with a cvar p.Chaos.ImmPhys.FixedStepTolerance
160
162 ENGINE_API void DebugDraw();
163
164 // Data relating to contacts returned by VisitCollisions
166 {
167 public:
168 // The overall accumulated impulse applied due to this collision/contact. Only valid if
169 // called after the solve has completed.
171
173
174 // The contact represents a point attached to one particle, and the plane attached to
175 // the other. These will be calculated and returned relative to where the particles are now.
177 const int32 ManifoldPointIndex,
178 FRealSingle& Depth, // The initial penetration depth
179 Chaos::FVec3& PlaneNormal,
182
183 private:
184 friend struct FSimulation;
185 // This is constructed by Chaos, so it passes in the original CollisionConstraint
188
190 };
191
192 // Access to collisions detected during the previous solve.
194 TFunction<void(const FCollisionData&)> Visitor, Chaos::ECollisionVisitorFlags VisitorFlags) const;
195
196 private:
197 void RemoveFromCollidingPairs(FActorHandle* ActorHandle);
198 void UpdateInertiaConditioning(const FVector& Gravity);
199 void PackCollidingPairs();
200 void UpdateActivePotentiallyCollidingPairs();
201 void EnableDisableJoints();
202 FReal UpdateStepTime(const FReal DeltaTime, const FReal MaxStepTime);
203
204 void UpdateStatCounters();
205 void DebugDrawStaticParticles();
206 void DebugDrawKinematicParticles();
207 void DebugDrawDynamicParticles();
208 void DebugDrawConstraints();
209 void DebugDrawSimulationSpace();
210
211 struct FImplementation;
212 TUniquePtr<FImplementation> Implementation;
213
214#if CHAOS_SOLVER_DEBUG_NAME
215 public:
216 void SetDebugName(const FName& Name)
217 {
218 DebugName = Name;
219 }
220
221 const FName& GetDebugName() const
222 {
223 return DebugName;
224 }
225
226 private:
227 FName DebugName;
228#endif
229
230 private:
231
232#if WITH_CHAOS_VISUAL_DEBUGGER
233 private:
235
236 public:
237 int32 GetCVDFrameNumber() const { return INDEX_NONE; }
238
240 {
241 return CVDContextData;
242 };
243#endif
244
245#if CHAOS_DEBUG_DRAW
246 public:
247 ENGINE_API void SetDebugDrawScene(const FString& SceneName, const ChaosDD::Private::FChaosDDScenePtr& InScene);
248
249 private:
250 ChaosDD::Private::FChaosDDTimelinePtr DDSimulationTimeline;
251#endif
252
253 };
254
255}
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_INTERNAL
Definition CoreMiscDefines.h:345
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
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
Definition CollisionContext.h:17
A contact constraint.
Definition PBDCollisionConstraint.h:225
Settings to control the low-level collision solver behaviour.
Definition PBDCollisionSolverSettings.h:12
Definition PBDJointConstraintTypes.h:219
Definition SimulationSpace.h:45
Definition NameTypes.h:617
Definition Array.h:670
Definition AndroidPlatformMisc.h:14
Definition UniquePtr.h:107
Definition SkeletalMeshComponent.h:307
ECollisionVisitorFlags
Definition CollisionVisitor.h:23
Definition ImmediatePhysicsActorHandle_Chaos.cpp:11
Chaos::FRealSingle FRealSingle
Definition ImmediatePhysicsCore_Chaos.h:34
Chaos::FReal FReal
Definition ImmediatePhysicsCore_Chaos.h:33
EActorType
Definition ImmediatePhysicsCore.h:17
Definition BodyInstance.h:320
Definition ConstraintInstance.h:255
Definition ImmediatePhysicsActorHandle_Chaos.h:46
Definition ImmediatePhysicsActorHandle_Chaos.h:14
Definition ImmediatePhysicsJointHandle_Chaos.h:39
Definition ImmediatePhysicsJointHandle_Chaos.h:16
Definition ImmediatePhysicsSimulation_Chaos.h:166
ENGINE_API Chaos::FVec3 GetCollisionAccumulatedImpulse() const
Definition ImmediatePhysicsSimulation_Chaos.cpp:1234
ENGINE_API int GetNumManifoldPoints() const
Definition ImmediatePhysicsSimulation_Chaos.cpp:1239
ENGINE_API const void GetManifoldPointData(const int32 ManifoldPointIndex, FRealSingle &Depth, Chaos::FVec3 &PlaneNormal, Chaos::FVec3 &PointLocation, Chaos::FVec3 &PlaneLocation) const
Definition ImmediatePhysicsSimulation_Chaos.cpp:1244
Definition ImmediatePhysicsSimulation_Chaos.h:75
FActorHandle * B
Definition ImmediatePhysicsSimulation_Chaos.h:77
FActorHandle * A
Definition ImmediatePhysicsSimulation_Chaos.h:76
Definition ImmediatePhysicsSimulation_Chaos.h:27
ENGINE_API void InitSimulationSpace(const FTransform &Transform)
Definition ImmediatePhysicsSimulation_Chaos.cpp:764
ENGINE_API void SetNumActiveBodies(int32 NumActiveBodies, TArray< int32 > ActiveBodyIndices)
Definition ImmediatePhysicsSimulation_Chaos.cpp:569
ENGINE_API void DestroyActor(FActorHandle *ActorHandle)
Definition ImmediatePhysicsSimulation_Chaos.cpp:468
ENGINE_API void DestroyJoint(FJointHandle *JointHandle)
Definition ImmediatePhysicsSimulation_Chaos.cpp:562
ENGINE_API void SetIgnoreCollisionActors(const TArray< FActorHandle * > &InIgnoreCollisionActors)
Definition ImmediatePhysicsSimulation_Chaos.cpp:716
ENGINE_API void DebugDraw()
Definition ImmediatePhysicsSimulation_Chaos.cpp:884
ENGINE_API void SetHasCollision(FActorHandle *ActorHandle, bool bHasCollision)
Definition ImmediatePhysicsSimulation_Chaos.cpp:531
ENGINE_API const Chaos::FCollisionDetectorSettings & GetCollisionDetectorSettings() const
Definition ImmediatePhysicsSimulation_Chaos.cpp:1224
ENGINE_API void DestroyActorCollisions(FActorHandle *ActorHandle)
Definition ImmediatePhysicsSimulation_Chaos.cpp:500
ENGINE_API ~FSimulation()
Definition ImmediatePhysicsSimulation_Chaos.cpp:390
ENGINE_API FActorHandle * CreateActor(EActorType ActorType, FBodyInstance *BodyInstance, const FTransform &Transform)
Definition ImmediatePhysicsSimulation_Chaos.cpp:446
ENGINE_API void AddToCollidingPairs(FActorHandle *ActorHandle)
Definition ImmediatePhysicsSimulation_Chaos.cpp:615
ENGINE_API void Simulate(FReal DeltaTime, FReal MaxStepTime, int32 MaxSubSteps, const FVector &InGravity, Chaos::FPBDJointSolverSettings *JointSolverSettings=nullptr, Chaos::FPBDCollisionSolverSettings *CollisionSolverSettings=nullptr, Chaos::FCollisionDetectorSettings *CollisionDetectorSettings=nullptr)
Definition ImmediatePhysicsSimulation_Chaos.cpp:919
ENGINE_API void SetSimulationSpaceSettings(const bool bEnabled, const FReal DampingAlpha, const FVector &ExternalLinearEtherDrag)
Definition ImmediatePhysicsSimulation_Chaos.cpp:784
ENGINE_API FJointHandle * CreateJoint(FConstraintInstance *ConstraintInstance, FActorHandle *Body1, FActorHandle *Body2)
Definition ImmediatePhysicsSimulation_Chaos.cpp:541
UE_INTERNAL ENGINE_API void SetMaxNumRollingAverageStepTimes(const int32 MaxNumRollingAverageStepTimes)
Definition ImmediatePhysicsSimulation_Chaos.cpp:865
ENGINE_API void SetCollisionDetectorSettings(const Chaos::FCollisionDetectorSettings &Settings)
Definition ImmediatePhysicsSimulation_Chaos.cpp:1229
ENGINE_API void UpdateSimulationSpace(const FTransform &Transform, const FVector &LinearVel, const FVector &AngularVel, const FVector &LinearAcc, const FVector &AngularAcc)
Definition ImmediatePhysicsSimulation_Chaos.cpp:770
UE_INTERNAL ENGINE_API void SetUseFixedStepTolerance(bool bUse)
Definition ImmediatePhysicsSimulation_Chaos.cpp:878
ENGINE_API int32 NumActors() const
Definition ImmediatePhysicsSimulation_Chaos.cpp:416
ENGINE_API FActorHandle * CreateStaticActor(FBodyInstance *BodyInstance)
Definition ImmediatePhysicsSimulation_Chaos.cpp:431
ENGINE_API void SetEnabled(FActorHandle *ActorHandle, bool bEnable)
Definition ImmediatePhysicsSimulation_Chaos.cpp:518
ENGINE_API void VisitCollisions(TFunction< void(const FCollisionData &)> Visitor, Chaos::ECollisionVisitorFlags VisitorFlags) const
Definition ImmediatePhysicsSimulation_Chaos.cpp:1280
ENGINE_API FActorHandle * GetActorHandle(int32 ActorHandleIndex)
Definition ImmediatePhysicsSimulation_Chaos.cpp:421
ENGINE_API void SetIsKinematic(FActorHandle *ActorHandle, bool bKinematic)
Definition ImmediatePhysicsSimulation_Chaos.cpp:505
UE_INTERNAL ENGINE_API void SetUseMinStepTime(bool bUse)
Definition ImmediatePhysicsSimulation_Chaos.cpp:873
ENGINE_API FActorHandle * CreateKinematicActor(FBodyInstance *BodyInstance, const FTransform &Transform)
Definition ImmediatePhysicsSimulation_Chaos.cpp:436
ENGINE_API FActorHandle * CreateDynamicActor(FBodyInstance *BodyInstance, const FTransform &Transform)
Definition ImmediatePhysicsSimulation_Chaos.cpp:441
ENGINE_API const Chaos::FSimulationSpaceSettings & GetSimulationSpaceSettings() const
Definition ImmediatePhysicsSimulation_Chaos.cpp:803
ENGINE_API void SetSolverSettings(const FReal FixedDt, const FReal CullDistance, const FReal MaxDepenetrationVelocity, const int32 UseLinearJointSolver, const int32 PositionIts, const int32 VelocityIts, const int32 ProjectionIts, const int32 bUseManifolds)
Definition ImmediatePhysicsSimulation_Chaos.cpp:808
void Simulate_AssumesLocked(FReal DeltaTime, FReal MaxStepTime, int32 MaxSubSteps, const FVector &InGravity, Chaos::FPBDJointSolverSettings *JointSolverSettings=nullptr, Chaos::FPBDCollisionSolverSettings *CollisionSolverSettings=nullptr, Chaos::FCollisionDetectorSettings *CollisionDetectorSettings=nullptr)
Definition ImmediatePhysicsSimulation_Chaos.h:105
ENGINE_API FSimulation()
Definition ImmediatePhysicsSimulation_Chaos.cpp:368
ENGINE_API void SetIgnoreCollisionPairTable(const TArray< FIgnorePair > &InIgnoreCollisionPairTable)
Definition ImmediatePhysicsSimulation_Chaos.cpp:670
ENGINE_API void SetRewindVelocities(bool bRewindVelocities)
Definition ImmediatePhysicsSimulation_Chaos.cpp:914