7#include "Containers/Array.h"
8#include "Containers/Map.h"
162 template<EThreadContext Id>
234 template<
typename TIndex>
242 template<
typename TIndex>
271 CHAOS_API FClusterCreationParameters DefaultClusterCreationParameters()
const;
279 UE_DEPRECATED(5.4,
"Please use ForceRecreateClusterUnionGeometry instead")
296 void FlushIncrementalGeometryOperations(FClusterUnion&
ClusterUnion);
299 template<
typename TParticle>
306 Data.UserData =
nullptr;
307 ShapeData->SetCollisionData(Data);
312 Data.Word0 = ActorId;
313 ShapeData->SetQueryData(Data);
319 Data.Word2 = ComponentId;
320 ShapeData->SetSimData(Data);
347 template<
typename TClusterParticle,
typename TParticle,
typename TLambda>
396 template<
typename TClusterParticle,
typename TParticle>
410 TEXT(
"RemoveParticlesFromClusterUnionGeometry : More than one shape per child particle : ShapeArray=[%d] AllChildParticles=[%d] ShapeParticles=[%d]"),
418 TEXT(
"RemoveParticlesFromClusterUnionGeometry : More than one shape per child particle : ShapeArray=[%d] AllChildParticles=[%d] ShapeParticles=[%d]"),
447 TEXT(
"RemoveParticlesFromClusterUnionGeometry : More than one shape per child particle : ShapeArray=[%d] AllChildParticles=[%d] ShapeParticles=[%d]"),
455 TEXT(
"RemoveParticlesFromClusterUnionGeometry : More than one shape per child particle : ShapeArray=[%d] AllChildParticles=[%d] ShapeParticles=[%d]"),
#define check(expr)
Definition AssertionMacros.h:314
#define ensureMsgf( InExpression, InFormat,...)
Definition AssertionMacros.h:465
#define ensure( InExpression)
Definition AssertionMacros.h:464
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#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
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
ESPMode
Definition SharedPointerFwd.h:12
Definition ClusterUnionManager.h:159
bool IsDirectlyConnectedToMainParticleInClusterUnion(const FClusterUnion &ClusterUnion, FPBDRigidParticleHandle *Particle) const
Definition ClusterUnionManager.cpp:1502
CHAOS_API FClusterUnionIndex CreateNewClusterUnion(const FClusterCreationParameters &Parameters, const FClusterUnionCreationParameters &ClusterUnionParameters=FClusterUnionCreationParameters{})
Definition ClusterUnionManager.cpp:287
CHAOS_API void AddPendingClusterIndexOperation(FClusterUnionIndex Index, EClusterUnionOperation Op, const TArray< FPBDRigidParticleHandle * > &Particles)
Definition ClusterUnionManager.cpp:411
CHAOS_API void HandleDeferredClusterUnionUpdateProperties()
Definition ClusterUnionManager.cpp:783
static FImplicitObjectTransformed * CreateTransformGeometryForClusterUnion(TThreadRigidParticle< Id > *Child, const FTransform &Frame)
Definition ClusterUnionManager.h:163
CHAOS_API FClusterUnion * FindClusterUnionFromParticle(FPBDRigidParticleHandle *Particle)
Definition ClusterUnionManager.cpp:500
CHAOS_API void UpdateClusterUnionParticlesChildToParent(FClusterUnionIndex Index, const TArray< FPBDRigidParticleHandle * > &Particles, const TArray< FTransform > &ChildToParent, bool bLock)
Definition ClusterUnionManager.cpp:1390
CHAOS_API FClusterUnionIndex FindClusterUnionIndexFromParticle(const FPBDRigidParticleHandle *Particle) const
Definition ClusterUnionManager.cpp:1347
CHAOS_API FClusterUnion * FindClusterUnion(FClusterUnionIndex Index)
Definition ClusterUnionManager.cpp:490
CHAOS_API void GenerateInterclusterEdgesBetweenParticles(FClusterUnion &ClusterUnion, FPBDRigidParticleHandle *Particle, FPBDRigidParticleHandle *OtherParticle)
Definition ClusterUnionManager.cpp:1094
CHAOS_API bool IsClusterUnionParticle(FPBDRigidClusteredParticleHandle *Particle)
Definition ClusterUnionManager.cpp:1379
CHAOS_API void AddPendingExplicitIndexOperation(FClusterUnionExplicitIndex Index, EClusterUnionOperation Op, const TArray< FPBDRigidParticleHandle * > &Particles)
Definition ClusterUnionManager.cpp:403
CHAOS_API void HandleRemoveOperation(FClusterUnionIndex ClusterIndex, const TArray< FPBDRigidParticleHandle * > &Particles, EClusterUnionOperationTiming UpdateClusterPropertiesTiming)
Definition ClusterUnionManager.cpp:813
CHAOS_API void UpdateAllClusterUnionProperties(FClusterUnion &ClusterUnion, EUpdateClusterUnionPropertiesFlags Flags=EUpdateClusterUnionPropertiesFlags::All)
Definition ClusterUnionManager.cpp:957
CHAOS_API void AddParticleToConnectionGraphInCluster(FClusterUnion &ClusterUnion, FPBDRigidParticleHandle *Particle)
Definition ClusterUnionManager.cpp:1035
CHAOS_API FClusterUnion * FindClusterUnionFromExplicitIndex(FClusterUnionExplicitIndex Index)
Definition ClusterUnionManager.cpp:479
CHAOS_API void HandleRemoveOperationWithClusterLookup(const TArray< FPBDRigidParticleHandle * > &InParticles, EClusterUnionOperationTiming UpdateClusterPropertiesTiming)
Definition ClusterUnionManager.cpp:938
CHAOS_API void HandleUpdateChildToParentOperation(FClusterUnionIndex ClusterIndex, const TArray< FPBDRigidParticleHandle * > &Particles)
Definition ClusterUnionManager.cpp:1418
CHAOS_API void DestroyClusterUnion(FClusterUnionIndex Index)
Definition ClusterUnionManager.cpp:331
CHAOS_API void RequestDeferredClusterPropertiesUpdate(FClusterUnionIndex ClusterIndex, EUpdateClusterUnionPropertiesFlags Flags)
Definition ClusterUnionManager.cpp:1542
CHAOS_API void FlushPendingOperations()
Definition ClusterUnionManager.cpp:419
CHAOS_API void HandleAddOperation(FClusterUnionIndex ClusterIndex, const TArray< FPBDRigidParticleHandle * > &InParticles, bool bReleaseClustersFirst)
Definition ClusterUnionManager.cpp:513
CHAOS_API void GenerateInterclusterEdgesForParticle(FClusterUnion &ClusterUnion, FPBDRigidParticleHandle *Particle)
Definition ClusterUnionManager.cpp:1041
const TMap< FClusterUnionIndex, FClusterUnion > & GetAllClusterUnions() const
Definition ClusterUnionManager.h:223
Definition ImplicitObjectUnion.h:27
Definition PBDRigidsEvolutionGBF.h:51
Definition PBDRigidClustering.h:56
Definition ParticleHandle.h:987
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_REWRITE bool IsEmpty() const
Definition Array.h:1133
void Append(const TArray< OtherElementType, OtherAllocatorType > &Source)
Definition Array.h:2412
UE_FORCEINLINE_HINT void Reserve(SizeType Number)
Definition Array.h:3016
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition UniquePtr.h:107
Definition SkeletalMeshComponent.h:307
int32 FClusterUnionExplicitIndex
Definition ClusterUnionManager.h:14
TPBDRigidParticleHandle< FReal, 3 > FPBDRigidParticleHandle
Definition ParticleHandleFwd.h:60
TRefCountPtr< FImplicitObject > FImplicitObjectPtr
Definition ImplicitFwd.h:33
EClusterUnionOperation
Definition ClusterUnionManager.h:21
EClusterUnionOperationTiming
Definition ClusterUnionManager.h:31
void TransferClusterUnionShapeData(const TUniquePtr< Chaos::FPerShapeData > &ShapeData, TParticle *TemplateParticle, const TUniquePtr< Chaos::FPerShapeData > &TemplateShape, int32 ActorId, int32 ComponentId)
Definition ClusterUnionManager.h:300
void ModifyAdditionOfChildrenToClusterUnionGeometry(TClusterParticle *ClusterParticle, const TArray< TParticle * > &Particles, int32 ActorId, int32 ComponentId, TLambda &&Func)
Definition ClusterUnionManager.h:348
EClusterUnionConnectivityOperation
Definition ClusterUnionManager.h:52
void RemoveArrayItemsAtSortedIndices(TItemArray &Items, const TArrayView< const int32 > &SortedIndicesToRemove)
Definition ArrayAlgorithm.h:35
int32 FClusterUnionIndex
Definition ClusterUnionManager.h:13
@ Add
Definition PendingSpatialData.h:18
EUpdateClusterUnionPropertiesFlags
Definition ClusterUnionManager.h:38
@ UpdateKinematicProperties
@ RecomputeMassOrientation
@ IncrementalGenerateConnectionGraph
@ IncrementalGenerateGeometry
@ ForceGenerateConnectionGraph
TPBDRigidClusteredParticleHandle< FReal, 3 > FPBDRigidClusteredParticleHandle
Definition ParticleHandleFwd.h:75
EClusterUnionGeometryOperation
Definition ClusterUnionManager.h:58
void RemoveParticlesFromClusterUnionGeometry(TClusterParticle *ClusterParticle, const TArray< TParticle * > &ShapeParticles, TArray< TParticle * > &AllChildParticles)
Definition ClusterUnionManager.h:397
std::conditional_t< Id==EThreadContext::External, FPBDRigidParticle, FPBDRigidParticleHandle > TThreadRigidParticle
Definition ParticleHandleFwd.h:126
U16 Index
Definition radfft.cpp:71
Definition ClusterCreationParameters.h:14
Definition ClusterUnionManager.h:147
FClusterUnionIndex ClusterUnionIndex
Definition ClusterUnionManager.h:150
bool bLock
Definition ClusterUnionManager.h:149
FTransform ChildToParent
Definition ClusterUnionManager.h:148
Definition ClusterUnionManager.h:65
const FUniqueIdx * UniqueIndex
Definition ClusterUnionManager.h:67
uint32 ActorId
Definition ClusterUnionManager.h:68
FClusterUnionExplicitIndex ExplicitIndex
Definition ClusterUnionManager.h:66
uint32 ComponentId
Definition ClusterUnionManager.h:69
int32 GravityGroupOverride
Definition ClusterUnionManager.h:70
Definition ClusterUnionManager.h:74
uint8 bIsAuxiliaryParticle
Definition ClusterUnionManager.h:80
uint8 bEdgesAreGenerated
Definition ClusterUnionManager.h:82
FClusterUnionParticleProperties()
Definition ClusterUnionManager.h:75
Definition ClusterUnionManager.h:86
TArray< TPair< FPBDRigidParticleHandle *, EClusterUnionConnectivityOperation > > PendingConnectivityOperations
Definition ClusterUnionManager.h:131
TArray< FPBDRigidParticleHandle * > ChildParticles
Definition ClusterUnionManager.h:94
FPBDRigidClusteredParticleHandle * InternalCluster
Definition ClusterUnionManager.h:88
const TArray< FPBDRigidParticleHandle * > & GetPendingGeometryOperationParticles(EClusterUnionGeometryOperation Op) const
Definition ClusterUnionManager.cpp:253
TMap< FPBDRigidParticleHandle *, FClusterUnionParticleProperties > ChildProperties
Definition ClusterUnionManager.h:101
TArray< FPBDRigidParticleHandle * > GeometryChildParticles
Definition ClusterUnionManager.h:98
bool bGeometryModified
Definition ClusterUnionManager.h:128
void ClearAllPendingGeometryOperations()
Definition ClusterUnionManager.cpp:268
FClusterUnionCreationParameters ClusterUnionParameters
Definition ClusterUnionManager.h:113
bool bNeedsXRInitialization
Definition ClusterUnionManager.h:116
bool bCheckConnectivity
Definition ClusterUnionManager.h:122
FClusterCreationParameters Parameters
Definition ClusterUnionManager.h:110
bool bAnchorLock
Definition ClusterUnionManager.h:119
void AddPendingGeometryOperation(EClusterUnionGeometryOperation Op, FPBDRigidParticleHandle *Particle)
Definition ClusterUnionManager.cpp:263
bool IsGravityOverrideSet() const
Definition ClusterUnionManager.h:133
FClusterUnionExplicitIndex ExplicitIndex
Definition ClusterUnionManager.h:107
FClusterUnionIndex InternalIndex
Definition ClusterUnionManager.h:104
bool bGenerateConnectivityEdges
Definition ClusterUnionManager.h:125
void ClearPendingGeometryOperations(EClusterUnionGeometryOperation Op)
Definition ClusterUnionManager.cpp:274
Chaos::FImplicitObjectPtr Geometry
Definition ClusterUnionManager.h:91
Definition ParticleDirtyFlags.h:722
Definition GeometryParticlesfwd.h:87
Definition CollisionFilterData.h:46