Navigation
API > API/Runtime > API/Runtime/Chaos
This class is used by Chaos to create internal clusters that will cause one or more clusters to simulate together as a single rigid particle.
| Name | FClusterUnionManager |
| Type | class |
| Header File | /Engine/Source/Runtime/Experimental/Chaos/Public/Chaos/ClusterUnionManager.h |
| Include Path | #include "Chaos/ClusterUnionManager.h" |
Syntax
class FClusterUnionManager
Constructors
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
FClusterUnionManager
(
FRigidClustering& InClustering, |
Chaos/ClusterUnionManager.h |
Typedefs
| Name | Type | Remarks | Include Path |
|---|---|---|---|
| FClusterOpMap | TMap< EClusterUnionOperation, TArray< FPBDRigidParticleHandle * > > | Chaos/ClusterUnionManager.h | |
| TClusterIndexOpMap | TMap< TIndex, FClusterOpMap > | Chaos/ClusterUnionManager.h |
Variables
Protected
| Name | Type | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|---|
| ClusterUnions | TMap< FClusterUnionIndex, FClusterUnion > | All of our actively managed cluster unions. | Chaos/ClusterUnionManager.h | |
| DeferredClusterUnionsForUpdateProperties | TMap< FClusterUnionIndex, EUpdateClusterUnionPropertiesFlags > | The set of cluster unions that we want to defer updating their cluster union properties for. | Chaos/ClusterUnionManager.h | |
| ExplicitIndexMap | TMap< FClusterUnionExplicitIndex, FClusterUnionIndex > | Using the user's passed in FClusterUnionIndex may result in strange unexpected behavior if the user creates a cluster with a specified index. | Chaos/ClusterUnionManager.h | |
| MClustering | FRigidClustering & | Chaos/ClusterUnionManager.h | ||
| MEvolution | FPBDRigidsEvolutionGBF & | Chaos/ClusterUnionManager.h | ||
| NextAvailableUnionIndex | FClusterUnionIndex | Chaos/ClusterUnionManager.h | ||
| PendingChildToParentUpdates | TMap< FPBDRigidClusteredParticleHandle *, FClusterUnionChildToParentUpdate > | Chaos/ClusterUnionManager.h | ||
| PendingClusterIndexOperations | TClusterIndexOpMap< FClusterUnionIndex > | Chaos/ClusterUnionManager.h | ||
| PendingExplicitIndexOperations | TClusterIndexOpMap< FClusterUnionExplicitIndex > | Chaos/ClusterUnionManager.h | ||
| PendingParticlesToUndoChildToParentLock | TSet< FPBDRigidClusteredParticleHandle * > | Chaos/ClusterUnionManager.h | ||
| ReusableIndices | TArray< FClusterUnionIndex > | Chaos/ClusterUnionManager.h |
Functions
Public
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
void AddParticleToConnectionGraphInCluster
(
FClusterUnion& ClusterUnion, |
Chaos/ClusterUnionManager.h | ||
void AddPendingClusterIndexOperation
(
FClusterUnionIndex Index, |
Chaos/ClusterUnionManager.h | ||
void AddPendingExplicitIndexOperation
(
FClusterUnionExplicitIndex Index, |
Add a new operation to the queue. Note that we currently only support the pending/flush operations for explicit operations. The behavior is legacy anyway so this should be fine. | Chaos/ClusterUnionManager.h | |
FClusterUnionIndex CreateNewClusterUnion
(
const FClusterCreationParameters& Parameters, |
Creates a new cluster union with an automatically assigned cluster union index. | Chaos/ClusterUnionManager.h | |
void DestroyClusterUnion
(
FClusterUnionIndex Index |
Destroy a given cluster union. | Chaos/ClusterUnionManager.h | |
const FClusterUnion * FindClusterUnion
(
FClusterUnionIndex Index |
Chaos/ClusterUnionManager.h | ||
FClusterUnion * FindClusterUnion
(
FClusterUnionIndex Index |
Chaos/ClusterUnionManager.h | ||
FClusterUnion * FindClusterUnionFromExplicitIndex
(
FClusterUnionExplicitIndex Index |
Access the cluster union externally. | Chaos/ClusterUnionManager.h | |
FClusterUnion * FindClusterUnionFromParticle
(
FPBDRigidParticleHandle* Particle |
Chaos/ClusterUnionManager.h | ||
const FClusterUnion * FindClusterUnionFromParticle
(
const FPBDRigidParticleHandle* Particle |
Chaos/ClusterUnionManager.h | ||
FClusterUnionIndex FindClusterUnionIndexFromParticle
(
const FPBDRigidParticleHandle* Particle |
Chaos/ClusterUnionManager.h | ||
void FlushPendingOperations() |
Will be called at the beginning of every time step to ensure that all the expected cluster unions have been modified. | Chaos/ClusterUnionManager.h | |
void GenerateInterclusterEdgesBetweenParticles
(
FClusterUnion& ClusterUnion, |
Chaos/ClusterUnionManager.h | ||
void GenerateInterclusterEdgesForParticle
(
FClusterUnion& ClusterUnion, |
Chaos/ClusterUnionManager.h | ||
const TMap< FClusterUnionIndex, FClusterUnion > & GetAllClusterUnions() |
Returns all cluster unions. Really meant only to be used for debugging. | Chaos/ClusterUnionManager.h | |
void HandleAddOperation
(
FClusterUnionIndex ClusterIndex, |
Actually performs the change specified in the FClusterUnionOperationData structure. | Chaos/ClusterUnionManager.h | |
void HandleDeferredClusterUnionUpdateProperties() |
Update cluster union properties here if they were deferred. This can be called manually but will otherwise also be handled in FlushPendingOperations. | Chaos/ClusterUnionManager.h | |
void HandleRemoveOperation
(
FClusterUnionIndex ClusterIndex, |
Removes the specified particles from the specified cluster. | Chaos/ClusterUnionManager.h | |
void HandleRemoveOperationWithClusterLookup
(
const TArray< FPBDRigidParticleHandle* >& InParticles, |
Helper function to remove particles given only the particle handle. This will consult the lookup table to find which cluster the particle is in before doing a normal remove operation. | Chaos/ClusterUnionManager.h | |
void HandleUpdateChildToParentOperation
(
FClusterUnionIndex ClusterIndex, |
Performs the queued child to parent modifications. | Chaos/ClusterUnionManager.h | |
bool IsClusterUnionParticle
(
FPBDRigidClusteredParticleHandle* Particle |
An extension to FindClusterUnionIndexFromParticle to check whether or not the given particle is the cluster union particle itself. | Chaos/ClusterUnionManager.h | |
bool IsDirectlyConnectedToMainParticleInClusterUnion
(
const FClusterUnion& ClusterUnion, |
Chaos/ClusterUnionManager.h | ||
void RequestDeferredClusterPropertiesUpdate
(
FClusterUnionIndex ClusterIndex, |
Put in a deferred request to update the properties of the specified cluster union. Flags can limit the scope of the update. | Chaos/ClusterUnionManager.h | |
void UpdateAllClusterUnionProperties
(
FClusterUnion& ClusterUnion, |
Update the cluster union's properties after its set of particle changes. | Chaos/ClusterUnionManager.h | |
| Changes the ChildToParent of a number of particles in a cluster union. bLock will prevent other functions from overriding the ChildToParent (aside from another call to UpdateClusterUnionParticlesChildToParent). | Chaos/ClusterUnionManager.h |
Static
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
static FImplicitObjectTransformed * CreateTransformGeometryForClusterUnion
(
TThreadRigidParticle< Id >* Child, |
Chaos/ClusterUnionManager.h |