23#include "Containers/Queue.h"
38#define PBDRIGID_PREALLOC_COUNT 1024
39#define KINEMATIC_GEOM_PREALLOC_COUNT 100
40#define GEOMETRY_PREALLOC_COUNT 100
46 template <
typename TSolver>
52 class FTaskDispatcherSolver;
59 class FCharacterGroundConstraint;
60 class FCharacterGroundConstraintProxy;
61 class FClusterUnionPhysicsProxy;
63 template <
typename T,
typename R,
int d>
64 class ISpatialAccelerationCollection;
66 class FAccelerationStructureHandle;
74 template<ELockType LockType>
94 friend class ::FChaosSolversModule;
96 template<EThreadingMode Mode>
157 template <
typename TSolver>
178#if WITH_CHAOS_VISUAL_DEBUGGER
220 UE_DEPRECATED(5.5,
"No longer used, see combined constraint in FPBDRigidsSolver::GetJointCombinedConstraints")
222 UE_DEPRECATED(5.5,
"No longer used, see combined constraint in FPBDRigidsSolver::GetJointCombinedConstraints")
265 UE_DEPRECATED(5.4,
"This method will be removed in the future")
270 return GeometryCollectionPhysicsProxies_Internal;
275 return GeometryCollectionPhysicsProxiesField_Internal;
280 return JointConstraintPhysicsProxies_Internal;
300 UE_DEPRECATED(5.5,
"Deprecated, use GetUseCollisionResimCache() instead")
303 UE_DEPRECATED(5.7,
"Deprecated, This functionality is now handled by FRewindData::ProcessDirtyPTParticles")
312 return MEvolution->GetSpatialAcceleration();
373 template <
typename LambdaType>
377 CHAOS_API void BufferPhysicsResultsSingleThreaded(
383 CHAOS_API virtual void PrepareAdvanceBy(
const FReal DeltaTime)
override;
401 bool bIsFloorAnalytic;
403 bool bIsDeterministic;
442 struct FPendingDestroyInfo
450 template<
typename ProxyType>
451 struct FPendingProxyDestroyInfo
461 CHAOS_API void ProcessSinglePushedData_Internal(FPushPhysicsData& PushData);
462 CHAOS_API virtual void ProcessPushedData_Internal(FPushPhysicsData& PushData)
override;
463 CHAOS_API void DestroyPendingProxies_Internal();
465 CHAOS_API virtual void ConditionalApplyRewind_Internal()
override;
471 void SetIsResimming(
bool bIsResimming);
480 ChaosDD::Private::FChaosDDScenePtr CDDScene;
481 ChaosDD::Private::FChaosDDTimelinePtr CDDFrameTimeline;
495 Solver->SimMaterialLock.ReadLock();
500 Solver->SimMaterialLock.ReadUnlock();
516 Solver->SimMaterialLock.WriteLock();
521 Solver->SimMaterialLock.WriteUnlock();
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
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
const bool
Definition NetworkReplayStreaming.h:178
int32 ChaosSolverParticlePoolNumFrameUntilShrink
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 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 UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition SparseArray.h:524
Definition UniquePtr.h:107
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()=delete
~TSolverSimMaterialScope()
Definition PBDRigidsSolver.h:519
TSolverSimMaterialScope()=delete
TSolverSimMaterialScope(FPhysicsSolverBase *InSolver)
Definition PBDRigidsSolver.h:512
Definition PBDRigidsSolver.h:76
TSolverSimMaterialScope()=delete
Definition ChaosSolverConfiguration.h:52
Definition SolverEventFilters.h:73
Definition SolverEventFilters.h:43
Definition SolverEventFilters.h:102
Definition SolverEventFilters.h:14