UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PBDRigidsSolver.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "Chaos/Defines.h"
19#include "Chaos/Transform.h"
21#include "ChaosSolversModule.h"
22#include "CoreMinimal.h"
23#include "Containers/Queue.h"
24#include "EventManager.h"
25#include "Field/FieldSystem.h"
30#include "SolverEventFilters.h"
31
37
38#define PBDRIGID_PREALLOC_COUNT 1024
39#define KINEMATIC_GEOM_PREALLOC_COUNT 100
40#define GEOMETRY_PREALLOC_COUNT 100
41
43
44namespace ChaosTest
45{
46 template <typename TSolver>
48}
49
50namespace Chaos::Private
51{
52 class FTaskDispatcherSolver;
53}
57namespace Chaos
58{
59 class FCharacterGroundConstraint;
60 class FCharacterGroundConstraintProxy;
61 class FClusterUnionPhysicsProxy;
62
63 template <typename T,typename R,int d>
64 class ISpatialAccelerationCollection;
65
66 class FAccelerationStructureHandle;
67
68 enum class ELockType : uint8
69 {
70 Read,
71 Write
72 };
73
74 template<ELockType LockType>
79
84 {
85
88
89 public:
90
92
94 friend class ::FChaosSolversModule;
95
96 template<EThreadingMode Mode>
97 friend class FDispatcher;
98
99 friend class FEventDefaults;
100
104
105 void* PhysSceneHack; //This is a total hack for now to get at the owning scene
106
109
113
116
118 //
119 // Execution API
120 //
121
123
124 //
125 // Object API
126 //
127
130
133
136
139
142
145
146 //
147 // Simulation API
148 //
149
150
151 FDirtyParticlesBuffer* GetDirtyParticlesBuffer() const { return MDirtyParticlesBuffer.Get(); }
152
155
156 //Make friend with unit test code so we can verify some behavior
157 template <typename TSolver>
159
160
161 CHAOS_API void Reset();
162
163
165
166
168
169
171
172
173
174
175 void SetCurrentFrame(const int32 CurrentFrameIn) { CurrentFrame = CurrentFrameIn; }
176 int32& GetCurrentFrame() { return CurrentFrame; }
177
178#if WITH_CHAOS_VISUAL_DEBUGGER
179 virtual int32 GetCVDFrameNumber() const override { return CurrentFrame; }
180#endif
181
182
191
192
205
211 CHAOS_API bool IsDetemerministic() const;
212
219
220 UE_DEPRECATED(5.5, "No longer used, see combined constraint in FPBDRigidsSolver::GetJointCombinedConstraints")
221 FPBDJointConstraints& GetJointConstraints() { return MEvolution->GetJointCombinedConstraints().LinearConstraints; }
222 UE_DEPRECATED(5.5, "No longer used, see combined constraint in FPBDRigidsSolver::GetJointCombinedConstraints")
223 const FPBDJointConstraints& GetJointConstraints() const { return MEvolution->GetJointCombinedConstraints().LinearConstraints; }
224
225
226 FJointConstraints& GetJointCombinedConstraints() { return MEvolution->GetJointCombinedConstraints(); }
227 const FJointConstraints& GetJointCombinedConstraints() const { return MEvolution->GetJointCombinedConstraints(); }
228
229 FPBDSuspensionConstraints& GetSuspensionConstraints() { return MEvolution->GetSuspensionConstraints(); }
230 const FPBDSuspensionConstraints& GetSuspensionConstraints() const { return MEvolution->GetSuspensionConstraints(); }
232
233 FCharacterGroundConstraintContainer& GetCharacterGroundConstraints() { return MEvolution->GetCharacterGroundConstraints(); }
234 const FCharacterGroundConstraintContainer& GetCharacterGroundConstraints() const { return MEvolution->GetCharacterGroundConstraints(); }
235
238 CHAOS_API void EnableRewindCapture(int32 NumFrames);
240
241
242 FPBDRigidsEvolution* GetEvolution() { return MEvolution.Get(); }
243 FPBDRigidsEvolution* GetEvolution() const { return MEvolution.Get(); }
244
245 FParticlesType& GetParticles() { return Particles; }
246 const FParticlesType& GetParticles() const { return Particles; }
247
248
249 FEventManager* GetEventManager() { return MEventManager.Get(); }
250 virtual void FlipEventManagerBuffer() { MEventManager->FlipBuffersIfRequired(); }
251
252
253 FSolverEventFilters* GetEventFilters() { return MSolverEventFilters.Get(); }
254 FSolverEventFilters* GetEventFilters() const { return MSolverEventFilters.Get(); }
255
256
258
259
261 CHAOS_API void PreSolveDebugDraw(FReal Dt) const;
262 CHAOS_API void PostTickDebugDraw(FReal Dt) const;
263
264 // Visual debugger (VDB) push methods
265 UE_DEPRECATED(5.4, "This method will be removed in the future")
267
269 {
270 return GeometryCollectionPhysicsProxies_Internal;
271 }
272
274 {
275 return GeometryCollectionPhysicsProxiesField_Internal;
276 }
277
279 {
280 return JointConstraintPhysicsProxies_Internal;
281 }
282
290
292 const THandleArray<FChaosPhysicsMaterial>& GetQueryMaterials_External() const { return QueryMaterials_External; }
293 const THandleArray<FChaosPhysicsMaterialMask>& GetQueryMaterialMasks_External() const { return QueryMaterialMasks_External; }
294 const THandleArray<FChaosPhysicsMaterial>& GetSimMaterials() const { return SimMaterials; }
295 const THandleArray<FChaosPhysicsMaterialMask>& GetSimMaterialMasks() const { return SimMaterialMasks; }
296
299
300 UE_DEPRECATED(5.5, "Deprecated, use GetUseCollisionResimCache() instead")
302
303 UE_DEPRECATED(5.7, "Deprecated, This functionality is now handled by FRewindData::ProcessDirtyPTParticles")
305
306 FPerSolverFieldSystem& GetPerSolverField() { return *PerSolverField; }
307 const FPerSolverFieldSystem& GetPerSolverField() const { return *PerSolverField; }
308
311 {
312 return MEvolution->GetSpatialAcceleration();
313 }
314
317
318 virtual void KillSafeAsyncTasks() override
319 {
321 }
322
323 virtual bool AreAnyTasksPending() const override
324 {
326 {
327 return true;
328 }
329
330 return false;
331 }
332
333 CHAOS_API void BeginDestroy();
334
337 Chaos::FPBDPositionConstraints& PositionTarget,
339
342
343 // Update the counter in Stats and the CSV profiler
345 CHAOS_API void UpdateStatCounters() const;
347
348 // Access particle proxy from physics thread useful for cross thread communication
353
354 // Interop utilities
356
357 // Apply callbacks internally
358 CHAOS_API virtual void ApplyCallbacks_Internal() override;
360
363
364 protected:
365
366#if CHAOS_DEBUG_NAME
367 virtual void OnDebugNameChanged() override final;
368#endif
369
370 private:
371
372
373 template <typename LambdaType>
374 int32 DispatchTasksBufferPhysicsResults(int32 DispatchBatchIndex, int32 NumDirty, LambdaType ReturnHandle);
375
376 CHAOS_API void BufferPhysicsResults();
377 CHAOS_API void BufferPhysicsResultsSingleThreaded(
380 TArray<FClusterUnionPhysicsProxy*>& ActiveClusterUnions);
381
382
383 CHAOS_API virtual void PrepareAdvanceBy(const FReal DeltaTime) override;
384 CHAOS_API virtual void AdvanceSolverBy(const FSubStepInfo& SubStepInfo) override;
385 CHAOS_API virtual void PushPhysicsState(const FReal ExternalDt, const int32 NumSteps, const int32 NumExternalSteps) override;
386 CHAOS_API virtual void SetExternalTimestampConsumed_Internal(const int32 Timestamp) override;
387
388 CHAOS_API void ClearCollisionEventsForProxy(const IPhysicsProxyBase* Proxy);
389
390 CHAOS_API void ApplyCVars();
391
392 CHAOS_API void UpdateIsDeterministic();
393
394 CHAOS_API void DebugDrawShapes(const bool bShowStatic, const bool bShowKinematic, const bool bShowDynamic) const;
395
396 //
397 // Solver Data
398 //
399 int32 CurrentFrame;
400 bool bHasFloor;
401 bool bIsFloorAnalytic;
402 FReal FloorHeight;
403 bool bIsDeterministic;
404
405 // Task dispatcher manage the task graph logic
407
408 // Physics material mirrors for the solver. These should generally stay in sync with the global material list from
409 // the game thread. This data is read only in the solver as we should never need to update it here. External threads can
410 // Enqueue commands to change parameters.
411 //
412 // There are two copies here to enable SQ to lock only the solvers that it needs to handle the material access during a query
413 // instead of having to lock the entire physics state of the runtime.
414 // NOTE: Must be before MEvolution because they are passed to it in the constructor
415 THandleArray<FChaosPhysicsMaterial> QueryMaterials_External;
416 THandleArray<FChaosPhysicsMaterialMask> QueryMaterialMasks_External;
419
421 FParticlesType Particles;
423 TUniquePtr<FEventManager> MEventManager;
424 TUniquePtr<FSolverEventFilters> MSolverEventFilters;
425 TUniquePtr<FDirtyParticlesBuffer> MDirtyParticlesBuffer;
426
427 //
428 // Proxies
429 //
430 TSharedPtr<FCriticalSection> MCurrentLock;
431 TSparseArray< FSingleParticlePhysicsProxy* > SingleParticlePhysicsProxies_PT;
432 TArray< FGeometryCollectionPhysicsProxy* > GeometryCollectionPhysicsProxies_Internal; // PT
433 TArray< FGeometryCollectionPhysicsProxy* > GeometryCollectionPhysicsProxiesField_Internal; // PT
434 TArray< FClusterUnionPhysicsProxy* > ClusterUnionPhysicsProxies_Internal; // PT
435 TArray< FJointConstraintPhysicsProxy* > JointConstraintPhysicsProxies_Internal; // PT
436 TArray< FCharacterGroundConstraintProxy* > CharacterGroundConstraintProxies_Internal;
437
439
440 FSolverSerializer Serializer;
441
442 struct FPendingDestroyInfo
443 {
445 int32 DestroyOnStep;
447 FUniqueIdx UniqueIdx;
448 };
449
450 template<typename ProxyType>
451 struct FPendingProxyDestroyInfo
452 {
453 ProxyType* Proxy;
454 int32 DestroyOnStep;
455 };
456
457 TArray<FPendingDestroyInfo> PendingDestroyPhysicsProxy;
458 TArray<FPendingProxyDestroyInfo<FGeometryCollectionPhysicsProxy>> PendingDestroyGeometryCollectionPhysicsProxy;
459 TArray<FPendingProxyDestroyInfo<FClusterUnionPhysicsProxy>> PendingDestroyClusterUnionProxy;
460
461 CHAOS_API void ProcessSinglePushedData_Internal(FPushPhysicsData& PushData);
462 CHAOS_API virtual void ProcessPushedData_Internal(FPushPhysicsData& PushData) override;
463 CHAOS_API void DestroyPendingProxies_Internal();
464
465 CHAOS_API virtual void ConditionalApplyRewind_Internal() override;
466
468 virtual bool IsResimming() const {return GetEvolution()->IsResimming();}
469
471 void SetIsResimming(bool bIsResimming);
472
473#if CHAOS_DEBUG_DRAW
474 public:
475 CHAOS_API virtual void SetDebugDrawScene(const ChaosDD::Private::FChaosDDScenePtr& InCDDScene) override final;
476
477 private:
478 // NOTE: A physics frame may consist of multiple sub-steps (ticks) so this debug draw timeline only
479 // captures debug draw that happens outside of the tick(s). See FPBDRigidsEvolutionGBF::SetDebugDrawScene
480 ChaosDD::Private::FChaosDDScenePtr CDDScene;
481 ChaosDD::Private::FChaosDDTimelinePtr CDDFrameTimeline;
482#endif
483 };
484
485 template<>
487 {
489
490
492 : Solver(InSolver)
493 {
494 check(Solver);
495 Solver->SimMaterialLock.ReadLock();
496 }
497
499 {
500 Solver->SimMaterialLock.ReadUnlock();
501 }
502
503 private:
504 FPhysicsSolverBase* Solver;
505 };
506
507 template<>
509 {
511
513 : Solver(InSolver)
514 {
515 check(Solver);
516 Solver->SimMaterialLock.WriteLock();
517 }
518
520 {
521 Solver->SimMaterialLock.WriteUnlock();
522 }
523
524 private:
525 FPhysicsSolverBase* Solver;
526 };
527
528}; // namespace Chaos
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
#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
const bool
Definition NetworkReplayStreaming.h:178
int32 ChaosSolverParticlePoolNumFrameUntilShrink
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition Defines.h:200
Definition Defines.h:85
Container class for all character ground constraints on the physics thread.
Definition CharacterGroundConstraintContainer.h:228
Definition CharacterGroundConstraint.h:19
Definition ClusterUnionPhysicsProxy.h:63
Definition EventDefaults.h:10
Definition EventManager.h:448
Definition PBDJointConstraintData.h:38
void SetDepenetrationVelocity(const FRealSingle InVel)
Definition PBDCollisionConstraints.h:249
void SetMaxPushOutVelocity(const FReal InMaxPushOutVelocity)
Definition PBDCollisionConstraints.h:244
void SetCullDistance(const FReal InCullDistance)
Definition PBDCollisionConstraints.h:325
Definition PBDJointConstraints.h:168
Constraint a single particle to a world-space position.
Definition PBDPositionConstraints.h:38
Definition PBDRigidActiveParticlesBuffer.h:26
Definition PBDRigidDynamicSpringConstraints.h:41
void KillSafeAsyncTasks()
Definition PBDRigidsEvolution.h:838
void SetNumProjectionIterations(int32 InNumIterations)
Definition PBDRigidsEvolution.h:399
void SetNumPositionIterations(int32 InNumIterations)
Definition PBDRigidsEvolution.h:367
void SetNumVelocityIterations(int32 InNumIterations)
Definition PBDRigidsEvolution.h:383
const bool IsResimming() const
Definition PBDRigidsEvolution.h:807
Definition PBDRigidsEvolutionGBF.h:51
FORCEINLINE const FRigidClustering & GetRigidClustering() const
Definition PBDRigidsEvolutionGBF.h:145
FORCEINLINE FCollisionConstraints & GetCollisionConstraints()
Definition PBDRigidsEvolutionGBF.h:136
Definition PBDRigidsSOAs.h:269
Definition PBDRigidsSolver.h:84
FPerSolverFieldSystem & GetPerSolverField()
Definition PBDRigidsSolver.h:306
CHAOS_API void PreIntegrateDebugDraw(FReal Dt) const
Definition PBDRigidsSolver.cpp:2938
void SetPositionIterations(const int32 InNumIterations)
Definition PBDRigidsSolver.h:183
CHAOS_API void UnregisterObject(FSingleParticlePhysicsProxy *Proxy)
Definition PBDRigidsSolver.cpp:882
void FinalizeRewindData(const TParticleView< FPBDRigidParticles > &DirtyParticles)
Definition PBDRigidsSolver.h:304
CHAOS_API void ResetStatCounters()
Definition PBDRigidsSolver.cpp:2768
CHAOS_API void UpdateExternalAccelerationStructure_External(ISpatialAccelerationCollection< FAccelerationStructureHandle, FReal, 3 > *&ExternalStructure)
Definition PBDRigidsSolver.cpp:3199
CHAOS_API void SetIsDeterministic(const bool bInIsDeterministic)
Request that the sim be deterministic (or not)
Definition PBDRigidsSolver.cpp:3209
const THandleArray< FChaosPhysicsMaterialMask > & GetQueryMaterialMasks_External() const
Definition PBDRigidsSolver.h:293
Chaos::FPBDRigidsEvolutionGBF FPBDRigidsEvolution
Definition PBDRigidsSolver.h:112
void SetVelocityBoundsExpansion(const FReal BoundsVelocityMultiplier, const FReal MaxBoundsVelocityExpansion)
Definition PBDRigidsSolver.cpp:1390
FPBDSuspensionConstraints & GetSuspensionConstraints()
Definition PBDRigidsSolver.h:229
TArray< FGeometryCollectionPhysicsProxy * > & GetGeometryCollectionPhysicsProxiesField_Internal()
Definition PBDRigidsSolver.h:273
void SetGenerateTrailingData(bool bDoGenerate)
Definition PBDRigidsSolver.h:199
void SetGenerateCollisionData(bool bDoGenerate)
Definition PBDRigidsSolver.h:193
FPBDRigidDynamicSpringConstraints FRigidDynamicSpringConstraints
Definition PBDRigidsSolver.h:114
const FCharacterGroundConstraintContainer & GetCharacterGroundConstraints() const
Definition PBDRigidsSolver.h:234
FSolverEventFilters * GetEventFilters() const
Definition PBDRigidsSolver.h:254
const FJointConstraints & GetJointCombinedConstraints() const
Definition PBDRigidsSolver.h:227
void SetTrailingFilterSettings(const FSolverTrailingFilterSettings &InTrailingFilterSettings)
Definition PBDRigidsSolver.h:203
virtual CHAOS_API void SetDebugDrawScene(const ChaosDD::Private::FChaosDDScenePtr &InCDDScene) override final
CHAOS_API void UpdateMaterial(Chaos::FMaterialHandle InHandle, const Chaos::FChaosPhysicsMaterial &InNewData)
Definition PBDRigidsSolver.cpp:3151
void SetBreakingFilterSettings(const FSolverBreakingFilterSettings &InBreakingFilterSettings)
Definition PBDRigidsSolver.h:202
void SetVelocityBoundsExpansionMACD(const FReal BoundsVelocityMultiplier, const FReal MaxBoundsVelocityExpansion)
Definition PBDRigidsSolver.cpp:1395
friend class FPersistentPhysicsTask
Definition PBDRigidsSolver.h:93
CHAOS_API void Reset()
Definition PBDRigidsSolver.cpp:1229
void SetCollisionFilterSettings(const FSolverCollisionFilterSettings &InCollisionFilterSettings)
Definition PBDRigidsSolver.h:201
CHAOS_API void StartingSceneSimulation()
Definition PBDRigidsSolver.cpp:1262
FPBDJointConstraints & GetJointConstraints()
Definition PBDRigidsSolver.h:221
CHAOS_API void SetSuspensionTarget(Chaos::FSuspensionConstraint *GTConstraint, const FVector &TargetPos, const FVector &Normal, bool Enabled)
Definition PBDRigidsSolver.cpp:1177
const TArray< FJointConstraintPhysicsProxy * > & GetJointConstraintPhysicsProxies_Internal() const
Definition PBDRigidsSolver.h:278
CHAOS_API void UpdateGameThreadStructures()
Definition PBDRigidsSolver.cpp:2752
FEventManager * GetEventManager()
Definition PBDRigidsSolver.h:249
CHAOS_API void EnableRewindCapture()
Definition PBDRigidsSolver.cpp:1223
virtual void KillSafeAsyncTasks() override
Definition PBDRigidsSolver.h:318
CHAOS_API void OnEvolutionPostIntegrate(FReal Dt)
Definition PBDRigidsSolver.cpp:750
CHAOS_API void RegisterObject(FSingleParticlePhysicsProxy *Proxy)
Definition PBDRigidsSolver.cpp:787
CHAOS_API void SyncEvents_GameThread()
Definition PBDRigidsSolver.cpp:1477
CHAOS_API void OnEvolutionPreIntegrate(FReal Dt)
Definition PBDRigidsSolver.cpp:736
void SetGenerateBreakingData(bool bDoGenerate)
Definition PBDRigidsSolver.h:194
FPBDRigidsEvolution * GetEvolution() const
Definition PBDRigidsSolver.h:243
virtual CHAOS_API void ApplyCallbacks_Internal() override
Definition PBDRigidsSolver.cpp:835
void PostEvolutionVDBPush() const
Definition PBDRigidsSolver.h:266
CHAOS_API void PostTickDebugDraw(FReal Dt) const
Definition PBDRigidsSolver.cpp:3000
FPhysicsSolverBase Super
Definition PBDRigidsSolver.h:91
void SetCollisionDepenetrationVelocity(const FRealSingle InVelocity)
Definition PBDRigidsSolver.h:190
CHAOS_API void CompleteSceneSimulation()
Definition PBDRigidsSolver.cpp:2255
void SetGenerateRemovalData(bool bDoGenerate)
Definition PBDRigidsSolver.h:200
CHAOS_API void SetParticleDynamicMisc(FPBDRigidParticleHandle *Rigid, const FParticleDynamicMisc &DynamicMisc)
Definition PBDRigidsSolver.cpp:3223
void SetCollisionMaxPushOutVelocity(const FReal InMaxPushOutVelocity)
Definition PBDRigidsSolver.h:189
CHAOS_API FSingleParticlePhysicsProxy * GetParticleProxy_PT(const FUniqueIdx &Idx)
Definition PBDRigidsSolver.cpp:3131
CHAOS_API void UpdateExpensiveStatCounters() const
Definition PBDRigidsSolver.cpp:2818
FDirtyParticlesBuffer * GetDirtyParticlesBuffer() const
Definition PBDRigidsSolver.h:151
CHAOS_API int32 NumJointConstraints() const
Definition PBDRigidsSolver.cpp:2758
CHAOS_API FSolverSerializer & GetSerializer()
Definition PBDRigidsSolver.cpp:848
Chaos::FGeometryParticleHandle FHandle
Definition PBDRigidsSolver.h:111
const FPerSolverFieldSystem & GetPerSolverField() const
Definition PBDRigidsSolver.h:307
void * PhysSceneHack
Definition PBDRigidsSolver.h:105
friend class FDispatcher
Definition PBDRigidsSolver.h:97
const THandleArray< FChaosPhysicsMaterial > & GetQueryMaterials_External() const
Definition PBDRigidsSolver.h:292
void SetProjectionIterations(const int32 InNumIterations)
Definition PBDRigidsSolver.h:185
CHAOS_API void FieldForcesUpdateCallback()
Definition PBDRigidsSolver.cpp:3394
CHAOS_API void DestroyMaterial(Chaos::FMaterialHandle InHandle)
Definition PBDRigidsSolver.cpp:3163
const FPBDSuspensionConstraints & GetSuspensionConstraints() const
Definition PBDRigidsSolver.h:230
virtual void FlipEventManagerBuffer()
Definition PBDRigidsSolver.h:250
CHAOS_API void BeginDestroy()
Definition PBDRigidsSolver.cpp:2742
void SetCollisionCullDistance(const FReal InCullDistance)
Definition PBDRigidsSolver.h:186
FParticlesType & GetParticles()
Definition PBDRigidsSolver.h:245
FPBDPositionConstraints FPositionConstraints
Definition PBDRigidsSolver.h:115
CHAOS_API void SyncQueryMaterials_External()
Definition PBDRigidsSolver.cpp:3187
CHAOS_API int32 NumCollisionConstraints() const
Definition PBDRigidsSolver.cpp:2763
const THandleArray< FChaosPhysicsMaterial > & GetSimMaterials() const
Definition PBDRigidsSolver.h:294
CHAOS_API bool IsDetemerministic() const
True if the simulation is running in deterministic mode This will be true if determinism is explicitl...
Definition PBDRigidsSolver.cpp:3204
CHAOS_API void FieldParameterUpdateCallback(Chaos::FPBDPositionConstraints &PositionTarget, TMap< int32, int32 > &TargetedParticles)
Definition PBDRigidsSolver.cpp:3387
FCharacterGroundConstraintContainer & GetCharacterGroundConstraints()
Definition PBDRigidsSolver.h:233
virtual bool AreAnyTasksPending() const override
Definition PBDRigidsSolver.h:323
CHAOS_API void UpdateMaterialMask(Chaos::FMaterialMaskHandle InHandle, const Chaos::FChaosPhysicsMaterialMask &InNewData)
Definition PBDRigidsSolver.cpp:3169
CHAOS_API void ApplyConfig(const FChaosSolverConfiguration &InConfig)
Definition PBDRigidsSolver.cpp:3275
const THandleArray< FChaosPhysicsMaterialMask > & GetSimMaterialMasks() const
Definition PBDRigidsSolver.h:295
void SetCurrentFrame(const int32 CurrentFrameIn)
Definition PBDRigidsSolver.h:175
CHAOS_API void CreateMaterialMask(Chaos::FMaterialMaskHandle InHandle, const Chaos::FChaosPhysicsMaterialMask &InNewData)
Definition PBDRigidsSolver.cpp:3175
CHAOS_API void UpdateStatCounters() const
Definition PBDRigidsSolver.cpp:2781
FPBDRigidsSOAs FParticlesType
Definition PBDRigidsSolver.h:107
Chaos::FGeometryParticle FParticle
Definition PBDRigidsSolver.h:110
FPBDRigidsEvolution * GetEvolution()
Definition PBDRigidsSolver.h:242
CHAOS_API void PreSolveDebugDraw(FReal Dt) const
Definition PBDRigidsSolver.cpp:2969
void SetVelocityIterations(const int32 InNumIterations)
Definition PBDRigidsSolver.h:184
FSolverEventFilters * GetEventFilters()
Definition PBDRigidsSolver.h:253
bool RewindUsesCollisionResimCache() const
Definition PBDRigidsSolver.h:301
friend class FPhysScene_ChaosInterface
Definition PBDRigidsSolver.h:102
CHAOS_API void DestroyMaterialMask(Chaos::FMaterialMaskHandle InHandle)
Definition PBDRigidsSolver.cpp:3181
const ISpatialAccelerationCollection< FAccelerationStructureHandle, FReal, 3 > * GetInternalAccelerationStructure_Internal() const
Definition PBDRigidsSolver.h:310
int32 & GetCurrentFrame()
Definition PBDRigidsSolver.h:176
FJointConstraints & GetJointCombinedConstraints()
Definition PBDRigidsSolver.h:226
CHAOS_API void ChangeBufferMode(Chaos::EMultiBufferMode InBufferMode)
Definition PBDRigidsSolver.cpp:1254
FPBDRigidDirtyParticlesBuffer FDirtyParticlesBuffer
Definition PBDRigidsSolver.h:108
TArray< FGeometryCollectionPhysicsProxy * > & GetGeometryCollectionPhysicsProxies_Internal()
Definition PBDRigidsSolver.h:268
void SetRemovalFilterSettings(const FSolverRemovalFilterSettings &InRemovalFilterSettings)
Definition PBDRigidsSolver.h:204
CHAOS_API void CreateMaterial(Chaos::FMaterialHandle InHandle, const Chaos::FChaosPhysicsMaterial &InNewData)
Definition PBDRigidsSolver.cpp:3157
const FParticlesType & GetParticles() const
Definition PBDRigidsSolver.h:246
Definition PBDSuspensionConstraints.h:53
Definition ParticleDirtyFlags.h:368
Definition PBDRigidsSOAs.h:37
Definition PhysicsSolverBase.h:313
bool GetUseCollisionResimCache() const
Definition PhysicsSolverBase.h:474
bool IsPendingTasksComplete() const
Definition PhysicsSolverBase.h:547
void SetGenerateClusterBreaking(bool DoGenerate)
Definition PBDRigidClustering.h:307
Definition SingleParticlePhysicsProxy.h:58
void UpdateFilterSettings(const FSolverBreakingFilterSettings &InSettings)
Definition SolverEventFilters.h:170
void UpdateFilterSettings(const FSolverCollisionFilterSettings &InSettings)
Definition SolverEventFilters.h:144
Definition SolverEventFilters.h:193
void SetGenerateTrailingEvents(bool bDoGenerate)
Definition SolverEventFilters.h:208
FSolverCollisionEventFilter * GetCollisionFilter() const
Definition SolverEventFilters.h:212
void SetGenerateRemovalEvents(bool bDoGenerate)
Definition SolverEventFilters.h:209
void SetGenerateBreakingEvents(bool bDoGenerate)
Definition SolverEventFilters.h:207
FSolverRemovalEventFilter * GetRemovalFilter() const
Definition SolverEventFilters.h:215
void SetGenerateCollisionEvents(bool bDoGenerate)
Definition SolverEventFilters.h:206
FSolverBreakingEventFilter * GetBreakingFilter() const
Definition SolverEventFilters.h:213
FSolverTrailingEventFilter * GetTrailingFilter() const
Definition SolverEventFilters.h:214
void UpdateFilterSettings(const FSolverRemovalFilterSettings &InSettings)
Definition SolverEventFilters.h:183
Definition SolverSerializer.h:41
void UpdateFilterSettings(const FSolverTrailingFilterSettings &InSettings)
Definition SolverEventFilters.h:157
Definition PBDSuspensionConstraintData.h:34
Definition ISpatialAccelerationCollection.h:23
Definition ParticleHandle.h:436
Definition ParticleHandle.h:2739
Definition Handles.h:152
Definition ParticleHandle.h:987
Definition PBDRigidParticles.h:22
Definition ParticleIterator.h:639
Definition GeometryCollectionPhysicsProxy.h:143
Definition PerSolverFieldSystem.h:11
Definition PhysInterface_Chaos.h:35
Definition SkeletalMeshPhysicsProxy.h:117
Definition StaticMeshPhysicsProxy.h:28
Definition PhysicsProxyBase.h:97
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition SparseArray.h:524
Definition UniquePtr.h:107
Definition Object.h:95
Definition CharacterGroundConstraintContainer.h:13
void AdvanceSolverNoPushHelper(TSolver *Solver, Chaos::FReal Dt)
Definition BodyInstance.h:90
Definition SkeletalMeshComponent.h:307
ELockType
Definition PBDRigidsSolver.h:69
EMultiBufferMode
Definition MultiBufferResource.h:9
FRealDouble FReal
Definition Real.h:22
float FRealSingle
Definition Real.h:14
@ Enabled
Definition SimulationModuleBase.h:139
Definition PhysicalMaterials.h:24
Definition PhysicalMaterials.h:63
Definition PBDJointConstraints.h:480
Definition PhysicsSolverBase.h:62
Definition GeometryParticlesfwd.h:87
TSolverSimMaterialScope(FPhysicsSolverBase *InSolver)
Definition PBDRigidsSolver.h:491
~TSolverSimMaterialScope()
Definition PBDRigidsSolver.h:498
~TSolverSimMaterialScope()
Definition PBDRigidsSolver.h:519
TSolverSimMaterialScope(FPhysicsSolverBase *InSolver)
Definition PBDRigidsSolver.h:512
Definition PBDRigidsSolver.h:76
Definition ChaosSolverConfiguration.h:52
Definition SolverEventFilters.h:73
Definition SolverEventFilters.h:43
Definition SolverEventFilters.h:102
Definition SolverEventFilters.h:14