27#define CHAOS_EVOLUTION_COLLISION_TESTMODE (!UE_BUILD_TEST && !UE_BUILD_SHIPPING)
78template <
typename TPayload,
typename T,
int d>
79class ISpatialAccelerationCollection;
111struct FSpatialAccelerationCacheHandle;
125#if PARTICLE_ITERATOR_RANGED_FOR_CHECK
126 MDirtyValidationCount = 0;
143#if PARTICLE_ITERATOR_RANGED_FOR_CHECK
144 MDirtyValidationCount = 0;
157#if PARTICLE_ITERATOR_RANGED_FOR_CHECK
158 MDirtyValidationCount = 0;
159 ++
Other.MDirtyValidationCount;
166#if PARTICLE_ITERATOR_RANGED_FOR_CHECK
167 int32 DirtyValidationCount()
const {
return MDirtyValidationCount; }
173 IncrementDirtyValidation();
179 IncrementDirtyValidation();
192 void IncrementDirtyValidation()
194#if PARTICLE_ITERATOR_RANGED_FOR_CHECK
195 ++MDirtyValidationCount;
199 TArrayCollectionArray<bool> MHasBoundingBoxes;
203#if PARTICLE_ITERATOR_RANGED_FOR_CHECK
204 int32 MDirtyValidationCount;
219 template <
typename TPayloadType>
288 for (
auto& Particle : NewParticles)
298 for (
auto& Particle : NewParticles)
308 for (
auto& Particle : NewParticles)
318 for (
auto& Particle : NewParticles)
328 for (
auto& Particle : NewParticles)
452#if CHAOS_EVOLUTION_COLLISION_TESTMODE
469 Rigid->ClearIsMovingKinematic();
498 template <
bool bPersistent>
552 template <
bool bPersistent>
579 template <
bool bPersistent>
607#if CHAOS_EVOLUTION_COLLISION_TESTMODE
678 ParticleHandle->ParticleConstraints().Reset();
693 Container->OnDisableParticle(ParticleHandle);
707 Container->OnEnableParticle(ParticleHandle);
725 Particle.ParticleConstraints().Reset();
726 Particle.ParticleCollisions().Reset();
889 template <
bool bPersistent>
919 ConstraintContainer->UpdatePositionBasedState(Dt);
1078#if CHAOS_EVOLUTION_COLLISION_TESTMODE
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
#define ensure( InExpression)
Definition AssertionMacros.h:464
#define CVD_TRACE_PARTICLE(ParticleHandle)
Definition ChaosVDTraceMacros.h:230
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_INTERNAL
Definition CoreMiscDefines.h:345
#define FORCEINLINE_DEBUGGABLE
Definition CoreMiscDefines.h:74
#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
int32 ChaosNumPushOutIterationsOverride
Definition PBDRigidsEvolution.cpp:20
int32 ChaosRigidsEvolutionApplyAllowEarlyOutCVar
Definition PBDRigidsEvolution.cpp:14
int32 ChaosNumContactIterationsOverride
Definition PBDRigidsEvolution.cpp:23
int32 ChaosRigidsEvolutionApplyPushoutAllowEarlyOutCVar
Definition PBDRigidsEvolution.cpp:17
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition ParticleHandle.h:213
Definition ChaosArchive.h:167
Base class for constraint handles.
Definition ConstraintHandle.h:102
bool IsInConstraintGraph() const
Definition ConstraintHandle.h:139
Definition PBDConstraintContainer.h:19
Definition PBDRigidsEvolution.h:1030
static FORCEINLINE ENamedThreads::Type GetDesiredThread()
Definition PBDRigidsEvolution.cpp:288
bool bIsSingleThreaded
Definition PBDRigidsEvolution.h:1051
FAccelerationStructure * InternalStructure
Definition PBDRigidsEvolution.h:1048
static FORCEINLINE TStatId GetStatId()
Definition PBDRigidsEvolution.cpp:283
void DoTask(ENamedThreads::Type CurrentThread, const FGraphEventRef &MyCompletionGraphEvent)
Definition PBDRigidsEvolution.cpp:524
bool bNeedsReset
Definition PBDRigidsEvolution.h:1052
bool IsForceFullBuild
Definition PBDRigidsEvolution.h:1050
std::atomic< bool > bKillTask
Definition PBDRigidsEvolution.h:1054
std::atomic< bool > bStarted
Definition PBDRigidsEvolution.h:1053
FAccelerationStructure * ExternalStructure
Definition PBDRigidsEvolution.h:1049
ISpatialAccelerationCollectionFactory & SpatialCollectionFactory
Definition PBDRigidsEvolution.h:1046
const TMap< FSpatialAccelerationIdx, TUniquePtr< FSpatialAccelerationCache > > & SpatialAccelerationCache
Definition PBDRigidsEvolution.h:1047
static FORCEINLINE ESubsequentsMode::Type GetSubsequentsMode()
Definition PBDRigidsEvolution.cpp:299
Definition PBDRigidsEvolution.h:271
FSharedDebugName EvolutionName
Definition PBDRigidsEvolution.h:1076
CHAOS_API void ComputeIntermediateSpatialAcceleration(bool bBlock=false)
Definition PBDRigidsEvolution.cpp:780
void InvalidateParticle(FGeometryParticleHandle *Particle)
Definition PBDRigidsEvolution.h:478
TFunction< void(TTransientPBDRigidParticleHandle< FReal, 3 > &Particle, const FReal)> FForceRule
Definition PBDRigidsEvolution.h:275
TArray< TPBDGeometryCollectionParticleHandle< FReal, 3 > * > CreateGeometryCollectionParticles(int32 NumParticles, const FUniqueIdx *ExistingIndices=nullptr, const FPBDRigidParticleParameters &Params=FPBDRigidParticleParameters())
Definition PBDRigidsEvolution.h:325
TArray< FUniqueIdx > PendingReleaseIndices
Definition PBDRigidsEvolution.h:1071
void KillSafeAsyncTasks()
Definition PBDRigidsEvolution.h:838
void DisableParticles(TSet< FGeometryParticleHandle * > &ParticlesIn)
Definition PBDRigidsEvolution.h:490
TArray< FGeometryParticleHandle * > CreateStaticParticles(int32 NumParticles, const FUniqueIdx *ExistingIndices=nullptr, const FGeometryParticleParameters &Params=FGeometryParticleParameters())
Definition PBDRigidsEvolution.h:285
void SetResim(bool bInResim)
Definition PBDRigidsEvolution.h:806
static void CopyPristineAccelerationStructures(const TMap< FSpatialAccelerationIdx, TUniquePtr< FSpatialAccelerationCache > > &SpatialAccelerationCache, FAccelerationStructure *FromStructure, FAccelerationStructure *ToStructure, bool CheckPristine)
Definition PBDRigidsEvolution.cpp:948
Private::FPBDIslandManager IslandManager
Definition PBDRigidsEvolution.h:961
static void CopyUnBuiltDynamicAccelerationStructures(const TMap< FSpatialAccelerationIdx, TUniquePtr< FSpatialAccelerationCache > > &SpatialAccelerationCache, FAccelerationStructure *InternalAcceleration, FAccelerationStructure *AsyncInternalAcceleration, FAccelerationStructure *AsyncExternalAcceleration)
Definition PBDRigidsEvolution.cpp:901
void CreateIslands()
Definition PBDRigidsEvolution.h:941
CHAOS_API void TestModeSaveParticle(FGeometryParticleHandle *Particle)
void SetNumProjectionIterations(int32 InNumIterations)
Definition PBDRigidsEvolution.h:399
FUpdatePositionRule ParticleUpdatePosition
Definition PBDRigidsEvolution.h:956
void UpdateConstraintPositionBasedState(FReal Dt)
Definition PBDRigidsEvolution.h:912
void SetCaptureRewindKinematicTargetFunction(FCaptureRewindKinematicTargetRule Rule)
Definition PBDRigidsEvolution.h:339
const FString & GetName() const
Definition PBDRigidsEvolution.h:872
int32 GetNumVelocityIterations() const
Definition PBDRigidsEvolution.h:391
TArray< FUniqueIdx > UniqueIndicesPendingRelease
Definition PBDRigidsEvolution.h:988
CHAOS_API void TestModeRestoreParticle(FGeometryParticleHandle *Particle)
FGraphEventRef AccelerationStructureTaskComplete
Definition PBDRigidsEvolution.h:1059
FORCEINLINE_DEBUGGABLE void DirtyParticle(TGeometryParticleHandleImp< FReal, 3, bPersistent > &Particle, const EPendingSpatialDataOperation Op=EPendingSpatialDataOperation::Update)
Definition PBDRigidsEvolution.h:553
TArray< FPBDRigidParticleHandle * > CreateDynamicParticles(int32 NumParticles, const FUniqueIdx *ExistingIndices=nullptr, const FPBDRigidParticleParameters &Params=FPBDRigidParticleParameters())
Definition PBDRigidsEvolution.h:305
CHAOS_API const FChaosPhysicsMaterial * GetFirstPhysicsMaterial(const FGeometryParticleHandle *Particle) const
Definition PBDRigidsEvolution.cpp:1256
void SetReset(bool bInReset)
Definition PBDRigidsEvolution.h:809
void ResetConstraints()
Definition PBDRigidsEvolution.h:714
virtual void SetName(const FString &InName)
Definition PBDRigidsEvolution.h:871
TArray< FKinematicGeometryParticleHandle * > CreateKinematicParticles(int32 NumParticles, const FUniqueIdx *ExistingIndices=nullptr, const FKinematicGeometryParticleParameters &Params=FKinematicGeometryParticleParameters())
Definition PBDRigidsEvolution.h:295
TArrayCollectionArray< bool > Collided
Definition PBDRigidsEvolution.h:965
virtual void ApplyKinematicTargets(const FReal Dt, const FReal StepFraction)
Definition PBDRigidsEvolution.h:779
void EnableConstraints(FGeometryParticleHandle *ParticleHandle)
Definition PBDRigidsEvolution.h:703
void AddImpulseFunction(FForceRule ImpulseFunction)
Definition PBDRigidsEvolution.h:336
const Private::FPBDIslandManager & GetIslandManager() const
Definition PBDRigidsEvolution.h:802
FORCEINLINE_DEBUGGABLE void RemoveParticleFromAccelerationStructure(TGeometryParticleHandleImp< FReal, 3, bPersistent > &ParticleHandle)
Definition PBDRigidsEvolution.h:890
void EnableParticle(FGeometryParticleHandle *Particle)
Definition PBDRigidsEvolution.h:439
int32 GetNumProjectionIterations() const
Definition PBDRigidsEvolution.h:407
FRewindData * GetRewindData()
Definition PBDRigidsEvolution.h:862
bool bIsSingleThreaded
Definition PBDRigidsEvolution.h:983
TMap< FSpatialAccelerationIdx, TUniquePtr< FSpatialAccelerationCache > > SpatialAccelerationCache
Definition PBDRigidsEvolution.h:1025
void WaitOnAccelerationStructure()
Definition PBDRigidsEvolution.cpp:751
ISpatialAccelerationCollection< FAccelerationStructureHandle, FReal, 3 > FAccelerationStructure
Definition PBDRigidsEvolution.h:273
const TArray< FRemovalData > & GetAllRemovals()
Definition PBDRigidsEvolution.h:868
FRewindData * MRewindData
Definition PBDRigidsEvolution.h:972
TFunction< void(TParticleView< FPBDRigidParticles > &)> FCaptureRewindKinematicTargetRule
Definition PBDRigidsEvolution.h:280
FORCEINLINE_DEBUGGABLE void DirtyParticleAsync(TGeometryParticleHandleImp< FReal, 3, bPersistent > &Particle, const EPendingSpatialDataOperation Op=EPendingSpatialDataOperation::Update)
Definition PBDRigidsEvolution.h:580
void SetNumPositionIterations(int32 InNumIterations)
Definition PBDRigidsEvolution.h:367
TArray< TUniquePtr< FAccelerationStructure > > AccelerationBackingBuffer
Definition PBDRigidsEvolution.h:982
void DisableParticle(FGeometryParticleHandle *Particle)
Definition PBDRigidsEvolution.h:450
FAccelerationStructure * GetFreeSpatialAcceleration_Internal()
Definition PBDRigidsEvolution.cpp:762
CHAOS_API void TestModeRestoreParticles()
void SetCaptureRewindDataFunction(FCaptureRewindRule Rule)
Definition PBDRigidsEvolution.h:338
FORCEINLINE_DEBUGGABLE bool IsADisableCluster(TGeometryParticleHandleImp< FReal, 3, bPersistent > &Particle)
Definition PBDRigidsEvolution.h:499
TSerializablePtr< FChaosPhysicsMaterial > GetPhysicsMaterial(const FGeometryParticleHandle *Particle) const
Definition PBDRigidsEvolution.h:744
FORCEINLINE_DEBUGGABLE void ApplyParticlePendingData(const FPendingSpatialData &PendingData, FAccelerationStructure &SpatialAcceleration, bool bUpdateCache, bool bUpdateDynamicTrees)
Definition PBDRigidsEvolution.cpp:549
TArray< FPBDConstraintContainer * > ConstraintContainers
Definition PBDRigidsEvolution.h:960
CHAOS_API void UpdateExternalAccelerationStructure_External(ISpatialAccelerationCollection< FAccelerationStructureHandle, FReal, 3 > *&ExternalStructure, FPendingSpatialDataQueue &PendingExternal)
Definition PBDRigidsEvolution.cpp:972
virtual void DestroyTransientConstraints()
Definition PBDRigidsEvolution.h:740
FAccelerationStructure * AsyncExternalAcceleration
Definition PBDRigidsEvolution.h:971
void SetRewindData(FRewindData *RewindData)
Definition PBDRigidsEvolution.h:857
bool bCanStartAsyncTasks
Definition PBDRigidsEvolution.h:986
TGeometryParticleHandles< FReal, 3 > & GetParticleHandles()
Definition PBDRigidsEvolution.h:341
int32 LatestExternalTimestampConsumed_Internal
Definition PBDRigidsEvolution.h:993
void AddForceFunction(FForceRule ForceFunction)
Definition PBDRigidsEvolution.h:335
TUniquePtr< ISpatialAccelerationCollectionFactory > SpatialCollectionFactory
Definition PBDRigidsEvolution.h:1063
void PruneInternalPendingData(FAccelerationStructure &AccelerationStructure)
Definition PBDRigidsEvolution.cpp:625
void SetNumVelocityIterations(int32 InNumIterations)
Definition PBDRigidsEvolution.h:383
FPBDRigidsSOAs & Particles
Definition PBDRigidsEvolution.h:967
bool bIsResim
Definition PBDRigidsEvolution.h:1072
TFunction< void(const TArray< FGeometryParticleHandle * > &, const FReal)> FUpdateVelocityRule
Definition PBDRigidsEvolution.h:276
const bool IsResetting() const
Definition PBDRigidsEvolution.h:810
void DisableConstraints(FGeometryParticleHandle *ParticleHandle)
Definition PBDRigidsEvolution.h:689
TArrayCollectionArray< TUniquePtr< FChaosPhysicsMaterial > > PerParticlePhysicsMaterials
Definition PBDRigidsEvolution.h:964
CHAOS_API void WakeParticle(FPBDRigidParticleHandle *Particle)
Definition PBDRigidsEvolution.cpp:1174
void FlushAsyncAccelerationQueue()
Definition PBDRigidsEvolution.cpp:678
TFunction< void(TParticleView< FPBDRigidParticles > &)> FCaptureRewindRule
Definition PBDRigidsEvolution.h:279
void SetPhysicsMaterial(FGeometryParticleHandle *Particle, TSerializablePtr< FChaosPhysicsMaterial > InMaterial)
Definition PBDRigidsEvolution.h:756
virtual void DestroyTransientConstraints(FGeometryParticleHandle *Particle)
Definition PBDRigidsEvolution.h:739
const Private::FPBDIslandManager & GetConstraintGraph() const
Definition PBDRigidsEvolution.h:797
TArray< TPBDRigidClusteredParticleHandle< FReal, 3 > * > CreateClusteredParticles(int32 NumParticles, const FUniqueIdx *ExistingIndices=nullptr, const FPBDRigidParticleParameters &Params=FPBDRigidParticleParameters())
Definition PBDRigidsEvolution.h:315
std::atomic< bool > * bAccelerationStructureTaskSignalKill
Definition PBDRigidsEvolution.h:1061
CHAOS_API void TestModeSaveParticles()
CHAOS_API void TestModeParticleDisabled(FGeometryParticleHandle *Particle)
const TUniquePtr< FChaosPhysicsMaterial > & GetPerParticlePhysicsMaterial(const FGeometryParticleHandle *Particle) const
Definition PBDRigidsEvolution.h:748
void ReleaseUniqueIdx(FUniqueIdx UniqueIdx)
Definition PBDRigidsEvolution.h:828
CHAOS_API void SetParticleSleepType(FPBDRigidParticleHandle *Particle, ESleepType InSleepType)
Definition PBDRigidsEvolution.cpp:1190
void SetPerParticlePhysicsMaterial(FGeometryParticleHandle *Particle, TUniquePtr< FChaosPhysicsMaterial > &InMaterial)
Definition PBDRigidsEvolution.h:750
CHAOS_API void RebuildSpatialAccelerationForPerfTest()
Definition PBDRigidsEvolution.cpp:1004
FAccelerationStructure * AsyncInternalAcceleration
Definition PBDRigidsEvolution.h:970
TArrayCollectionArray< TSerializablePtr< FChaosPhysicsMaterial > > PhysicsMaterials
Definition PBDRigidsEvolution.h:963
TFunction< void(FPBDRigidParticles &, const FReal, const FReal, const int32)> FKinematicUpdateRule
Definition PBDRigidsEvolution.h:278
FAccelerationStructure * InternalAcceleration
Definition PBDRigidsEvolution.h:969
TArray< FForceRule > ForceRules
Definition PBDRigidsEvolution.h:954
TSpscQueue< FAccelerationStructure * > ExternalStructuresQueue
Definition PBDRigidsEvolution.h:975
const TParticleView< FPBDRigidClusteredParticles > & GetNonDisabledClusteredView() const
Definition PBDRigidsEvolution.h:742
FPendingSpatialDataQueue AsyncAccelerationQueue
Definition PBDRigidsEvolution.h:1001
CHAOS_API void FlushExternalAccelerationQueue(FAccelerationStructure &Acceleration, FPendingSpatialDataQueue &ExternalQueue)
Definition PBDRigidsEvolution.cpp:705
const bool IsResimming() const
Definition PBDRigidsEvolution.h:807
void DestroyParticle(FGeometryParticleHandle *Particle)
Definition PBDRigidsEvolution.h:605
ISpatialAccelerationCollection< FAccelerationStructureHandle, FReal, 3 > * GetSpatialAcceleration()
Definition PBDRigidsEvolution.h:785
void SetParticleUpdatePositionFunction(FUpdatePositionRule ParticleUpdate)
Definition PBDRigidsEvolution.h:337
void ReserveParticles(const int32 Num)
Definition PBDRigidsEvolution.h:626
CHAOS_API void TestModeStep()
void DisconnectConstraints(const TSet< FGeometryParticleHandle * > &RemovedParticles)
Definition PBDRigidsEvolution.h:668
Private::FTaskDispatcherEvolution TaskDispatcher
Definition PBDRigidsEvolution.h:1003
TArray< FForceRule > ImpulseRules
Definition PBDRigidsEvolution.h:955
const TGeometryParticleHandles< FReal, 3 > & GetParticleHandles() const
Definition PBDRigidsEvolution.h:342
FPBDRigidsSOAs & GetParticles()
Definition PBDRigidsEvolution.h:344
void SetCanStartAsyncTasks(bool bInCanStartAsyncTasks)
Definition PBDRigidsEvolution.h:852
virtual CHAOS_API ~FPBDRigidsEvolutionBase()
Definition PBDRigidsEvolution.cpp:241
int32 NumConstraints() const
Definition PBDRigidsEvolution.h:878
void RegisterParticle(FGeometryParticleHandle *Particle)
Definition PBDRigidsEvolution.h:417
bool IsUniqueIndexPendingRelease(FUniqueIdx UniqueIdx) const
Definition PBDRigidsEvolution.h:833
TArray< FRemovalData > MAllRemovals
Definition PBDRigidsEvolution.h:990
void ReleasePendingIndices()
Definition PBDRigidsEvolution.cpp:1027
CHAOS_API void SetParticleObjectState(FPBDRigidParticleHandle *Particle, EObjectStateType ObjectState)
Definition PBDRigidsEvolution.cpp:1109
void FreeSpatialAcceleration_External(FAccelerationStructure *Structure)
Definition PBDRigidsEvolution.cpp:774
const Private::FPBDIslandGroupManager & GetIslandGroupManager() const
Definition PBDRigidsEvolution.h:803
virtual UE_INTERNAL void WaitIntegrationComplete()
Definition PBDRigidsEvolution.h:875
TSpscQueue< FAccelerationStructure * > ExternalStructuresPool
Definition PBDRigidsEvolution.h:979
void ResetAllRemovals()
Definition PBDRigidsEvolution.h:869
void CreateConstraintGraph()
Definition PBDRigidsEvolution.h:923
Private::FPBDIslandGroupManager IslandGroupManager
Definition PBDRigidsEvolution.h:962
void RemoveConstraintsFromConstraintGraph(const FConstraintHandleArray &Constraints)
Definition PBDRigidsEvolution.h:653
void RemoveConstraintFromConstraintGraph(FConstraintHandle *ConstraintHandle)
Definition PBDRigidsEvolution.h:644
FPendingSpatialInternalDataQueue InternalAccelerationQueue
Definition PBDRigidsEvolution.h:998
bool AreAnyTasksPending() const
Definition PBDRigidsEvolution.h:846
const FPBDRigidsSOAs & GetParticles() const
Definition PBDRigidsEvolution.h:345
FCaptureRewindRule CaptureRewindData
Definition PBDRigidsEvolution.h:958
TArrayAsMap< FUniqueIdx, uint32 > ParticleToCacheInnerIdx
Definition PBDRigidsEvolution.h:1023
CHAOS_API void DisableParticleWithRemovalEvent(FGeometryParticleHandle *Particle)
Definition PBDRigidsEvolution.cpp:1227
void PrepareTick()
Definition PBDRigidsEvolution.h:763
CHAOS_API void FlushSpatialAcceleration()
Definition PBDRigidsEvolution.cpp:996
TFunction< void(const TParticleView< FPBDRigidParticles > &, const FReal)> FUpdatePositionRule
Definition PBDRigidsEvolution.h:277
void AddConstraintContainer(FPBDConstraintContainer &InContainer, const int32 Priority=0)
Definition PBDRigidsEvolution.h:355
THandleArray< FChaosPhysicsMaterial > & SolverPhysicsMaterials
Definition PBDRigidsEvolution.h:968
Private::FPBDIslandManager & GetIslandManager()
Definition PBDRigidsEvolution.h:801
void ReleaseIdx(FUniqueIdx Idx)
Definition PBDRigidsEvolution.cpp:1022
CHAOS_API void TestModeUpdateSavedParticle(FGeometryParticleHandle *Particle)
void UnprepareTick()
Definition PBDRigidsEvolution.h:771
FKinematicUpdateRule KinematicUpdate
Definition PBDRigidsEvolution.h:957
int32 GetNumPositionIterations() const
Definition PBDRigidsEvolution.h:375
FCaptureRewindKinematicTargetRule CaptureRewindKinematicTarget
Definition PBDRigidsEvolution.h:959
std::atomic< bool > * bAccelerationStructureTaskStarted
Definition PBDRigidsEvolution.h:1060
TMap< FPBDRigidParticleHandle *, FTestModeParticleData > TestModeData
Definition PBDRigidsEvolution.h:1093
void FlushInternalAccelerationQueue()
Definition PBDRigidsEvolution.cpp:663
FUniqueIdx GenerateUniqueIdx()
Definition PBDRigidsEvolution.h:814
virtual void ResetCollisions()
Definition PBDRigidsEvolution.h:349
bool bIsReset
Definition PBDRigidsEvolution.h:1073
Definition PBDRigidsSOAs.h:269
void DestroyParticle(FGeometryParticleHandle *Particle)
Definition PBDRigidsSOAs.h:440
TArray< FGeometryParticleHandle * > CreateStaticParticles(int32 NumParticles, const FUniqueIdx *ExistingIndices=nullptr, const FGeometryParticleParameters &Params=FGeometryParticleParameters())
Definition PBDRigidsSOAs.h:335
TArray< FKinematicGeometryParticleHandle * > CreateKinematicParticles(int32 NumParticles, const FUniqueIdx *ExistingIndices=nullptr, const FKinematicGeometryParticleParameters &Params=FKinematicGeometryParticleParameters())
Definition PBDRigidsSOAs.h:343
auto & GetUniqueIndices()
Definition PBDRigidsSOAs.h:1012
const TGeometryParticleHandles< FReal, 3 > & GetParticleHandles() const
Definition PBDRigidsSOAs.h:953
void DisableParticle(FGeometryParticleHandle *Particle)
Definition PBDRigidsSOAs.h:496
TArray< FPBDRigidClusteredParticleHandle * > CreateClusteredParticles(int32 NumParticles, const FUniqueIdx *ExistingIndices=nullptr, const FPBDRigidParticleParameters &Params=FPBDRigidParticleParameters())
Definition PBDRigidsSOAs.h:393
const TParticleView< FPBDRigidClusteredParticles > & GetNonDisabledClusteredView() const
Definition PBDRigidsSOAs.h:928
const TParticleView< FGeometryParticles > & GetAllParticlesView() const
Definition PBDRigidsSOAs.h:938
void EnableParticle(FGeometryParticleHandle *Particle)
Definition PBDRigidsSOAs.h:543
TArray< FPBDRigidParticleHandle * > CreateDynamicParticles(int32 NumParticles, const FUniqueIdx *ExistingIndices=nullptr, const FPBDRigidParticleParameters &Params=FPBDRigidParticleParameters())
Definition PBDRigidsSOAs.h:351
TArray< TPBDGeometryCollectionParticleHandle< FReal, 3 > * > CreateGeometryCollectionParticles(int32 NumParticles, const FUniqueIdx *ExistingIndices=nullptr, const FPBDRigidParticleParameters &Params=FPBDRigidParticleParameters())
Definition PBDRigidsSOAs.h:364
Definition RewindData.h:1650
void RemoveObject(const FGeometryParticleHandle *Particle, const EAllowShrinking AllowShrinking=EAllowShrinking::Default)
Definition RewindData.h:1693
Definition ChaosDebugName.h:17
const FString & Value() const
Definition ChaosDebugName.h:42
Definition PBDRigidsEvolution.h:115
FSpatialAccelerationCache(FSpatialAccelerationCache &&Other)
Definition PBDRigidsEvolution.h:131
const FAccelerationStructureHandle & Payload(const int32 Idx) const
Definition PBDRigidsEvolution.h:188
bool HasBounds(const int32 Idx) const
Definition PBDRigidsEvolution.h:182
void DestroyElement(const int32 Idx)
Definition PBDRigidsEvolution.h:176
FSpatialAccelerationCache()
Definition PBDRigidsEvolution.h:119
FSpatialAccelerationCache(const FSpatialAccelerationCache &)=delete
void AddElements(const int32 Num)
Definition PBDRigidsEvolution.h:170
FAccelerationStructureHandle & Payload(const int32 Idx)
Definition PBDRigidsEvolution.h:189
FSpatialAccelerationCache & operator=(FSpatialAccelerationCache &&Other)
Definition PBDRigidsEvolution.h:148
bool & HasBounds(const int32 Idx)
Definition PBDRigidsEvolution.h:183
FAABB3 & Bounds(const int32 Idx)
Definition PBDRigidsEvolution.h:186
const FAABB3 & Bounds(const int32 Idx) const
Definition PBDRigidsEvolution.h:185
Definition ISpatialAccelerationCollection.h:23
virtual bool RemoveElementFrom(const TPayloadType &Payload, FSpatialAccelerationIdx Idx)
Definition ISpatialAcceleration.h:323
Definition IslandGroupManager.h:77
const FIterationSettings & GetIterationSettings() const
Definition IslandGroupManager.h:130
CHAOS_API void AddConstraintContainer(FPBDConstraintContainer &ConstraintContainer, const int32 Priority=0)
Definition IslandGroupManager.cpp:85
void SetNumPositionIterations(const int32 InNumIterations)
Definition IslandGroupManager.h:120
void SetNumProjectionIterations(const int32 InNumIterations)
Definition IslandGroupManager.h:122
void SetNumVelocityIterations(const int32 InNumIterations)
Definition IslandGroupManager.h:121
Definition IslandManager.h:453
CHAOS_API void AddConstraintContainer(const FPBDConstraintContainer &Container)
Definition IslandManager.cpp:645
CHAOS_API void AddParticle(FGeometryParticleHandle *Particle)
Definition IslandManager.cpp:957
CHAOS_API void UpdateParticles()
Definition IslandManager.cpp:984
CHAOS_API void UpdateIslands()
Definition IslandManager.cpp:1133
CHAOS_API void RemoveParticle(FGeometryParticleHandle *Particle)
Definition IslandManager.cpp:963
CHAOS_API void RemoveParticleConstraints(FGeometryParticleHandle *Particle)
Definition IslandManager.cpp:1069
CHAOS_API int32 ReserveParticles(const int32 InNumParticles)
Definition IslandManager.cpp:709
CHAOS_API void UpdateParticleMaterial(FGeometryParticleHandle *Particle)
Definition IslandManager.cpp:725
CHAOS_API void RemoveConstraint(FConstraintHandle *ConstraintHandle)
Definition IslandManager.cpp:1050
CHAOS_API void Reset()
Definition IslandManager.cpp:689
Definition TaskDispatcherEvolution.h:15
int32 GetNumVelocityIterations() const
Definition IterationSettings.h:61
int32 GetNumPositionIterations() const
Definition IterationSettings.h:60
int32 GetNumProjectionIterations() const
Definition IterationSettings.h:62
Definition ISpatialAcceleration.h:509
Definition ArrayCollectionArray.h:15
Definition ArrayCollection.h:10
int32 AddArray(TArrayCollectionArrayBase *Array)
Definition ArrayCollection.h:36
void ResizeHelper(const int32 Num)
Definition ArrayCollection.h:93
void RemoveAtSwapHelper(const int32 Index)
Definition ArrayCollection.h:119
void AddElementsHelper(const int32 Num)
Definition ArrayCollection.h:84
Definition ParticleIterator.h:577
Definition ParticleHandle.h:436
const TPBDRigidParticleHandleImp< T, d, bPersistent > * CastToRigidParticle() const
Definition ParticleHandle.h:1697
FUniqueIdx UniqueIdx() const
Definition ParticleHandle.h:561
const auto & AuxilaryValue(const Container &AuxContainer) const
Definition ParticleHandle.h:720
bool HasCollision() const
Definition ParticleHandle.h:596
FConstraintHandleArray & ParticleConstraints()
Definition ParticleHandle.h:827
const TPBDRigidClusteredParticleHandleImp< T, d, bPersistent > * CastToClustered() const
Definition ParticleHandle.h:1703
const IPhysicsProxyBase * PhysicsProxy() const
Definition ParticleHandle.h:695
FSpatialAccelerationIdx SpatialIdx() const
Definition ParticleHandle.h:681
Definition ParticleHandle.h:2663
Definition ParticleHandle.h:1500
Definition ParticleHandle.h:987
Definition PBDRigidParticles.h:22
Definition ParticleIterator.h:639
Definition Serializable.h:10
Definition Constraints.Build.cs:6
bool IsComplete() const
Definition TaskGraphInterfaces.h:529
void Reset(SizeType NewSize=0)
Definition Array.h:2246
Definition AndroidPlatformMisc.h:14
Definition UnrealString.h.inl:34
UE_FORCEINLINE_HINT ReferencedType * GetReference() const
Definition RefCounting.h:584
Definition SpscQueue.h:18
Definition UniquePtr.h:107
Definition SkeletalMeshComponent.h:307
CHAOS_API int32 ForceNoCollisionIntoSQ
Definition SingleParticlePhysicsProxy.cpp:58
FRealDouble FReal
Definition Real.h:22
EObjectStateType
Definition ObjectState.h:10
EPendingSpatialDataOperation
Definition PendingSpatialData.h:15
@ Delete
Definition PendingSpatialData.h:16
@ Add
Definition PendingSpatialData.h:18
@ Update
Definition PendingSpatialData.h:19
float FRealSingle
Definition Real.h:14
CHAOS_API FBroadPhaseConfig BroadPhaseConfig
Definition PBDRigidsEvolution.cpp:59
CHAOS_API int32 FixBadAccelerationStructureRemoval
Definition PBDRigidsEvolution.cpp:34
ESleepType
Definition RigidParticles.h:23
Type
Definition TaskGraphInterfaces.h:57
Type
Definition TaskGraphInterfaces.h:249
Definition OverriddenPropertySet.cpp:45
Definition PBDRigidsEvolution.h:39
int32 AABBMaxChildrenInLeaf
Definition PBDRigidsEvolution.h:54
int32 BVNumCells
Definition PBDRigidsEvolution.h:51
int32 MaxTreeDepth
Definition PBDRigidsEvolution.h:53
int32 AABBMaxTreeDepth
Definition PBDRigidsEvolution.h:55
FRealSingle MaxPayloadSize
Definition PBDRigidsEvolution.h:56
@ Grid
Definition PBDRigidsEvolution.h:42
@ TreeAndGrid
Definition PBDRigidsEvolution.h:45
@ Tree
Definition PBDRigidsEvolution.h:43
@ TreeOfGrid
Definition PBDRigidsEvolution.h:44
@ TreeOfGridAndGrid
Definition PBDRigidsEvolution.h:46
int32 IterationsPerTimeSlice
Definition PBDRigidsEvolution.h:57
int32 BroadphaseType
Definition PBDRigidsEvolution.h:50
int32 MaxChildrenInLeaf
Definition PBDRigidsEvolution.h:52
FBroadPhaseConfig()
Definition PBDRigidsEvolution.h:59
Definition PBDRigidsEvolution.h:82
int32 CollisionPointsForAllConstraints
Definition PBDRigidsEvolution.h:86
int32 ActiveCollisionPoints
Definition PBDRigidsEvolution.h:83
FEvolutionStats & operator+=(const FEvolutionStats &Other)
Definition PBDRigidsEvolution.h:101
int32 ActiveShapes
Definition PBDRigidsEvolution.h:84
FEvolutionStats()
Definition PBDRigidsEvolution.h:88
int32 ShapesForAllConstraints
Definition PBDRigidsEvolution.h:85
void Reset()
Definition PBDRigidsEvolution.h:93
Definition ParticleHandle.h:47
Definition ParticleHandle.h:57
Definition ParticleHandle.h:67
Definition PBDRigidsEvolution.h:1089
FVec3 W
Definition PBDRigidsEvolution.h:1090
FVec3 X
Definition PBDRigidsEvolution.h:1090
FRotation3 Q
Definition PBDRigidsEvolution.h:1091
FRotation3 R
Definition PBDRigidsEvolution.h:1091
FVec3 V
Definition PBDRigidsEvolution.h:1090
FVec3 P
Definition PBDRigidsEvolution.h:1090
Definition PendingSpatialData.h:184
FPendingSpatialData & FindOrAdd(const FUniqueIdx UniqueIdx, EPendingSpatialDataOperation Operation=EPendingSpatialDataOperation::Add)
Definition PendingSpatialData.h:199
TArray< FPendingSpatialData > PendingData
Definition PendingSpatialData.h:185
int32 Num() const
Definition PendingSpatialData.h:194
Definition PendingSpatialData.h:25
FAccelerationStructureHandle AccelerationHandle
Definition PendingSpatialData.h:26
FSpatialAccelerationIdx SpatialIdx
Definition PendingSpatialData.h:27
EPendingSpatialDataOperation Operation
Definition PendingSpatialData.h:29
Definition PendingSpatialData.h:65
void Remove(const FUniqueIdx UniqueIdx)
Definition PendingSpatialData.h:136
FPendingSpatialData & Add(int32 BatchIndex, const FUniqueIdx UniqueIdx, EPendingSpatialDataOperation Operation=EPendingSpatialDataOperation::Add)
Definition PendingSpatialData.h:99
Definition PBDRigidsEvolution.h:210
bool HasBoundingBox() const
Definition PBDRigidsEvolution.h:225
FSpatialAccelerationCache * Cache
Definition PBDRigidsEvolution.h:240
FSpatialAccelerationCache * GeometryParticles
Definition PBDRigidsEvolution.h:239
int32 ParticleIdx
Definition PBDRigidsEvolution.h:245
int32 EntryIdx
Definition PBDRigidsEvolution.h:246
const FAABB3 & BoundingBox() const
Definition PBDRigidsEvolution.h:230
FSpatialAccelerationCacheHandle(FSpatialAccelerationCache *InCache=nullptr, int32 InEntryIdx=INDEX_NONE)
Definition PBDRigidsEvolution.h:214
TPayloadType GetPayload(int32 Idx) const
Definition PBDRigidsEvolution.h:220
bool LightWeightDisabled() const
Definition PBDRigidsEvolution.h:235
Definition GeometryParticlesfwd.h:59
Definition GeometryParticlesfwd.h:87
Definition PBDRigidsEvolution.h:251
virtual bool IsBucketTimeSliced(uint16 BucketIdx) const =0
virtual TUniquePtr< ISpatialAcceleration< FAccelerationStructureHandle, FReal, 3 > > CreateAccelerationPerBucket_Threaded(const TConstParticleView< FSpatialAccelerationCache > &Particles, uint16 BucketIdx, bool ForceFullBuild, bool bDynamicTree, bool bBuildOverlapCache)=0
virtual uint8 GetActiveBucketsMask() const =0
virtual void Serialize(TUniquePtr< ISpatialAccelerationCollection< FAccelerationStructureHandle, FReal, 3 > > &Ptr, FChaosArchive &Ar)=0
virtual ~ISpatialAccelerationCollectionFactory()=default
virtual TUniquePtr< ISpatialAccelerationCollection< FAccelerationStructureHandle, FReal, 3 > > CreateEmptyCollection()=0
Definition LightweightStats.h:416