15 class FPerParticleGravity;
25 class FPBDIslandMergeSet;
90 void Reset() { Bits = 0; }
100 uint32 bWasTransformSetExplicitly : 1;
134 int32 SleepCounterThreshold = 0;
184 FFlags() : Bits(0) {}
185 void Reset() { Bits = 0; }
197 FConstraintHandle* Constraint =
nullptr;
199 FPBDIslandParticle* Nodes[2] = {
nullptr,
nullptr };
248 return ContainerEdges[ContainerId].Num();
253 return Nodes[NodeIndex];
258 return Flags.bIsSleeping;
273 return Flags.bIsSleepAllowed;
278 return Flags.bNeedsResim;
298 return Flags.bIsUsingCache;
355 FFlags() : Bits(0) {}
356 void Reset() { Bits = 0; }
362 uint32 bIsSleepAllowed : 1;
363 uint32 bIsPartialSleepAllowedInAllNodes : 1;
364 uint32 bHasSleepingNode : 1;
365 uint32 bEnoughMotionlessNodesForPartialSleep : 1;
385 FPBDIslandMergeSet* MergeSet =
nullptr;
397 int32 SleepCounter = 0;
400 int32 DisableCounter = 0;
404 int32 SleepTypeSwitchCounter = 0;
592 CHAOS_API void ResetIslandPartialSleepAllowed();
663 CHAOS_API bool ShouldAssignLevels()
const;
686 int32 NextLevelSortKey = 0;
689 int32 NextVisitEpoch = 0;
692 bool bIsDeterministic =
false;
695 bool bAssignLevels =
true;
699 template<
typename Constra
intContainerType>
702 const int32 ContainerId = ConstraintContainer.GetContainerId();
703 for (
FConstraintHandle* ConstraintHandle : ConstraintContainer.GetConstraintHandles())
705 if (ConstraintHandle !=
nullptr)
707 const bool bIsInGraph = ConstraintHandle->IsInConstraintGraph();
711 AddConstraint(ContainerId, ConstraintHandle, ConstraintHandle->GetConstrainedParticles());
721 template<
typename VisitorType>
726 if (!Island->Flags.bIsSleeping)
730 if (!
Edge->Flags.bIsSleeping)
739 template<
typename VisitorType>
749 template<
typename VisitorType>
754 if (
Edge->ContainerIndex == ContainerId)
761 template<
typename VisitorType>
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
constexpr auto MakeArrayView(OtherRangeType &&Other)
Definition ArrayView.h:873
@ INDEX_NONE
Definition CoreMiscDefines.h:150
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Base class for constraint handles.
Definition ConstraintHandle.h:102
Definition PBDConstraintContainer.h:19
Definition PBDRigidsEvolutionGBF.h:51
Definition PBDRigidsSOAs.h:269
Definition PerParticleGravity.h:11
Definition IslandManager.h:151
FConstraintHandle * GetConstraint() const
Definition IslandManager.h:157
uint64 GetSortKey() const
Definition IslandManager.h:162
CHAOS_API int32 GetIslandId() const
Definition IslandManager.cpp:445
friend class FPBDIsland
Definition IslandManager.h:179
void SetArrayIndex(const int32 InIndex)
Definition IslandManager.h:170
CHAOS_API ~FPBDIslandConstraint()
Definition IslandManager.cpp:440
CHAOS_API void Trash()
Definition IslandManager.cpp:468
CHAOS_API void Reuse(const int32 InContainerId, FConstraintHandle *InConstraint)
Definition IslandManager.cpp:454
CHAOS_API FPBDIslandConstraint()
Definition IslandManager.cpp:431
const int32 GetArrayIndex() const
Definition IslandManager.h:169
Definition IslandGroupManager.h:77
Definition IslandManager.h:453
CHAOS_API void RemoveConstraintContainer(const FPBDConstraintContainer &Container)
Definition IslandManager.cpp:654
CHAOS_API void RemoveContainerConstraints(const int32 ContainerId)
Definition IslandManager.cpp:1101
CHAOS_API int32 GetConstraintLevel(const FPBDIslandConstraint *Edge) const
Definition IslandManager.cpp:1167
UE_DEPRECATED(5.3, "Use Reset") void RemoveConstraints()
Definition IslandManager.h:548
CHAOS_API void ResetParticleResimFrame(const int32 ResetFrame=INDEX_NONE)
Definition IslandManager.cpp:1198
UE_DEPRECATED(5.3, "Use GetParticleIsland") const FPBDIsland *GetIsland(const FGeometryParticleHandle *Particle) const
Definition IslandManager.h:551
void VisitConstConstraints(const int32 ContainerId, const VisitorType &Visitor) const
Definition IslandManager.h:750
CHAOS_API void UpdateExplicitSleep()
Definition IslandManager.cpp:2400
CHAOS_API int32 GetConstraintColor(const FPBDIslandConstraint *Edge) const
Definition IslandManager.cpp:1176
CHAOS_API const FPBDIsland * GetParticleIsland(const FGeometryParticleHandle *Particle) const
Definition IslandManager.cpp:736
CHAOS_API int32 GetIslandIndex(const FPBDIsland *Island) const
Definition IslandManager.cpp:754
CHAOS_API void WakeParticleIslands(FGeometryParticleHandle *Particle)
Definition IslandManager.cpp:848
CHAOS_API bool WasParticleTransformSetExplicitly(const FGeometryParticleHandle *Particle)
Definition IslandManager.cpp:926
CHAOS_API void UpdateSleep(const FReal Dt=0)
Definition IslandManager.cpp:1138
void VisitAwakeConstraints(const int32 ContainerId, const VisitorType &Visitor)
Definition IslandManager.h:740
CHAOS_API void AddConstraintContainer(const FPBDConstraintContainer &Container)
Definition IslandManager.cpp:645
CHAOS_API void AddParticle(FGeometryParticleHandle *Particle)
Definition IslandManager.cpp:957
CHAOS_API void SetParticleResimFrame(FGeometryParticleHandle *Particle, const int32 ResimFrame)
Definition IslandManager.cpp:1190
CHAOS_API int32 GetParticleColor(const FPBDIslandParticle *Node) const
Definition IslandManager.cpp:1162
CHAOS_API void EndTick()
Definition IslandManager.cpp:1148
CHAOS_API TArray< const FConstraintHandle * > FindConstraintsInIslands(const TArray< const FPBDIsland * > Islands, int32 ContainerId) const
Definition IslandManager.cpp:833
int32 GetNumParticles() const
Definition IslandManager.h:462
void AddContainerConstraints(ConstraintContainerType &ConstraintContainer)
Definition IslandManager.h:700
CHAOS_API int32 GetParticleLevel(FGeometryParticleHandle *Particle) const
Definition IslandManager.cpp:716
CHAOS_API void UpdateParticles()
Definition IslandManager.cpp:984
CHAOS_API void RemoveParticleContainerConstraints(FGeometryParticleHandle *Particle, const int32 ContainerId)
Definition IslandManager.cpp:1084
CHAOS_API void FlagParticleTransformSetExplicitly(const FGeometryParticleHandle *Particle)
Definition IslandManager.cpp:942
CHAOS_API void SetGravityForces(const FPerParticleGravity *InGravity)
Definition IslandManager.cpp:674
CHAOS_API void SetIsDeterministic(const bool bInIsDeterministic)
Definition IslandManager.cpp:634
UE_DEPRECATED(5.3, "Use GetNumIslands") int32 NumIslands() const
Definition IslandManager.h:550
CHAOS_API void RemoveAllConstraints()
Definition IslandManager.cpp:1114
const FPBDIsland * GetIsland(const int32 IslandIndex) const
Definition IslandManager.h:486
FConstraintHandle * Constraint
Definition IslandManager.h:552
CHAOS_API void UpdateIslands()
Definition IslandManager.cpp:1133
CHAOS_API int32 GetIslandArrayIndex(const FPBDIslandConstraint *Edge) const
Definition IslandManager.cpp:763
void VisitConstraints(const int32 ContainerId, const VisitorType &Visitor)
Definition IslandManager.h:762
CHAOS_API void RemoveParticle(FGeometryParticleHandle *Particle)
Definition IslandManager.cpp:963
CHAOS_API void SetMaterialContainers(const TArrayCollectionArray< TSerializablePtr< FChaosPhysicsMaterial > > *InPhysicsMaterials, const TArrayCollectionArray< TUniquePtr< FChaosPhysicsMaterial > > *InPerParticlePhysicsMaterials, const THandleArray< FChaosPhysicsMaterial > *InSimMaterials)
Definition IslandManager.cpp:667
CHAOS_API int32 GetParticleResimFrame(const FGeometryParticleHandle *Particle) const
Definition IslandManager.cpp:1181
int32 GetNumIslands() const
Definition IslandManager.h:485
CHAOS_API int32 GetNumConstraintContainers() const
Definition IslandManager.cpp:684
FPBDIsland * GetIsland(const int32 IslandIndex)
Definition IslandManager.h:533
CHAOS_API void UpdateDisable(TFunctionRef< void(FPBDRigidParticleHandle *)> ParticleDisableFunctor)
Definition IslandManager.cpp:1143
CHAOS_API void RemoveParticleConstraints(FGeometryParticleHandle *Particle)
Definition IslandManager.cpp:1069
CHAOS_API TArray< const FPBDIsland * > FindParticleIslands(const FGeometryParticleHandle *Particle) const
Definition IslandManager.cpp:772
CHAOS_API const FPBDIsland * GetConstraintIsland(const FConstraintHandle *Constraint) const
Definition IslandManager.cpp:745
CHAOS_API int32 ReserveParticles(const int32 InNumParticles)
Definition IslandManager.cpp:709
CHAOS_API ~FPBDIslandManager()
Definition IslandManager.cpp:614
CHAOS_API TArray< const FGeometryParticleHandle * > FindParticlesInIslands(const TArray< const FPBDIsland * > Islands) const
Definition IslandManager.cpp:805
CHAOS_API void AddConstraint(const int32 ContainerId, FConstraintHandle *Constraint, const TVec2< FGeometryParticleHandle * > &ConstrainedParticles)
Definition IslandManager.cpp:1024
void VisitAwakeConstConstraints(const int32 ContainerId, const VisitorType &Visitor) const
Definition IslandManager.h:722
CHAOS_API void FlagParticleUpdated(const FGeometryParticleHandle *Particle)
Definition IslandManager.cpp:911
UE_DEPRECATED(5.3, "Use UpdateParticles") void InitializeGraph(const TParticleView< FPBDRigidParticles > &InParticles)
Definition IslandManager.h:549
CHAOS_API void SetAssignLevels(const bool bInAssignLevels)
Definition IslandManager.cpp:640
CHAOS_API void SleepParticle(FGeometryParticleHandle *Particle)
Definition IslandManager.cpp:894
CHAOS_API void UpdateParticleMaterial(FGeometryParticleHandle *Particle)
Definition IslandManager.cpp:725
CHAOS_API void RemoveConstraint(FConstraintHandle *ConstraintHandle)
Definition IslandManager.cpp:1050
CHAOS_API void WakeConstraintIsland(FConstraintHandle *Constraint)
Definition IslandManager.cpp:1124
CHAOS_API void Reset()
Definition IslandManager.cpp:689
CHAOS_API void SetDisableCounterThreshold(const int32 InDisableCounterThreshold)
Definition IslandManager.cpp:679
int32 GetNumConstraints() const
Definition IslandManager.h:475
Definition IslandManager.h:417
CHAOS_API void Trash()
Definition IslandManager.cpp:584
CHAOS_API FPBDIslandMergeSet()
Definition IslandManager.cpp:570
const int32 GetArrayIndex() const
Definition IslandManager.h:423
void SetArrayIndex(const int32 InIndex)
Definition IslandManager.h:424
CHAOS_API ~FPBDIslandMergeSet()
Definition IslandManager.cpp:575
CHAOS_API void Reuse()
Definition IslandManager.cpp:580
Definition IslandManager.h:41
const int32 GetArrayIndex() const
Definition IslandManager.h:58
CHAOS_API int32 GetIslandId() const
Definition IslandManager.cpp:381
void SetIterationSettings(const FIterationSettings &InIterations)
Definition IslandManager.h:77
FIterationSettings GetIterationSettings() const
Definition IslandManager.h:69
CHAOS_API ~FPBDIslandParticle()
Definition IslandManager.cpp:376
CHAOS_API void Reuse(FGeometryParticleHandle *InParticle)
Definition IslandManager.cpp:390
const FGeometryParticleHandle * GetParticle() const
Definition IslandManager.h:52
friend class FPBDIsland
Definition IslandManager.h:84
CHAOS_API void Trash()
Definition IslandManager.cpp:400
CHAOS_API FPBDIslandParticle()
Definition IslandManager.cpp:367
FGeometryParticleHandle * GetParticle()
Definition IslandManager.h:47
void SetArrayIndex(const int32 InIndex)
Definition IslandManager.h:59
Definition IslandManager.h:231
CHAOS_API ~FPBDIsland()
Definition IslandManager.cpp:506
int32 GetSleepCounter() const
Definition IslandManager.h:261
bool NeedsResim() const
Definition IslandManager.h:276
void SetIterationSettings(const FIterationSettings &InIterations)
Definition IslandManager.h:340
const FPBDIslandParticle * GetNode(const int32 NodeIndex) const
Definition IslandManager.h:251
bool IsPartialSleepEnabled() const
Definition IslandManager.cpp:556
void SetIsUsingCache(const bool bInIsUsingCache)
Definition IslandManager.h:301
bool IsSleeping() const
Definition IslandManager.h:256
bool IsUsingCache() const
Definition IslandManager.h:296
void SetSleepCounter(const int32 InSleepCounter)
Definition IslandManager.h:266
int32 GetNumParticles() const
Definition IslandManager.h:236
CHAOS_API void Trash()
Definition IslandManager.cpp:520
FIterationSettings GetIterationSettings() const
Definition IslandManager.h:332
int32 GetIslandId() const
Definition IslandManager.h:318
bool IsSleepAllowed() const
Definition IslandManager.h:271
TArrayView< FPBDIslandConstraint * > GetConstraints(const int32 ContainerId)
Definition IslandManager.h:311
void SetResimFrame(const int32 InResimFrame)
Definition IslandManager.h:291
void SetNeedsResim(const bool bInNeedsResim)
Definition IslandManager.h:281
int32 GetNumConstraints() const
Definition IslandManager.h:241
const int32 GetArrayIndex() const
Definition IslandManager.h:324
void SetArrayIndex(const int32 InIndex)
Definition IslandManager.h:325
int32 GetResimFrame() const
Definition IslandManager.h:286
CHAOS_API void Reuse()
Definition IslandManager.cpp:511
int32 GetNumContainerConstraints(const int32 ContainerId) const
Definition IslandManager.h:246
TArrayView< FPBDIslandParticle * > GetParticles()
Definition IslandManager.h:306
CHAOS_API FPBDIsland()
Definition IslandManager.cpp:501
Definition IterationSettings.h:19
Definition PoolBackedArray.h:37
Definition ArrayCollectionArray.h:15
Definition ParticleHandle.h:436
const TPBDRigidParticleHandleImp< T, d, bPersistent > * CastToRigidParticle() const
Definition ParticleHandle.h:1697
Definition ParticleHandle.h:987
Definition PBDRigidParticles.h:22
Definition ParticleIterator.h:639
Definition Serializable.h:10
Definition ArrayView.h:139
Definition AssetRegistryState.h:50
Definition UniquePtr.h:107
Definition ChaosDebugDraw.h:25
Definition BodyInstance.h:90
FIterationSettings8 FIterationSettings
Definition IterationSettings.h:83
Definition SkeletalMeshComponent.h:307
FRealDouble FReal
Definition Real.h:22
float FRealSingle
Definition Real.h:14
TGeometryParticleHandle< FReal, 3 > FGeometryParticleHandle
Definition ParticleHandleFwd.h:24
Definition IslandManager.h:28
FRealSingle Angular
Definition IslandManager.h:34
FRealSingle Linear
Definition IslandManager.h:33
FPBDParticleMomentumSq(const FRealSingle Linear=0.0f, const FRealSingle Angular=0.0f)
Definition IslandManager.h:29
Definition NumericLimits.h:41