UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FGeometryCollectionPhysicsProxy Class Reference

#include <GeometryCollectionPhysicsProxy.h>

+ Inheritance diagram for FGeometryCollectionPhysicsProxy:

Classes

struct  FParticleCollisionFilterData
 

Public Types

enum class  EReplicationMode : uint8 { Unknown , Server , Client }
 
typedef TPhysicsProxy< FGeometryCollectionPhysicsProxy, FStubGeometryCollectionData, FGeometryCollectionProxyTimestampBase
 
typedef FCollisionStructureManager::FSimplicial FSimplicial
 
typedef Chaos::TPBDRigidParticle< Chaos::FReal, 3 > FParticle
 
typedef Chaos::TPBDRigidParticleHandle< Chaos::FReal, 3 > FParticleHandle
 
typedef Chaos::TPBDRigidClusteredParticleHandle< Chaos::FReal, 3 > FClusterHandle
 
using FCreateTraceCollisionGeometryCallback = TFunction< void(const FTransform &InToLocal, TArray< Chaos::FImplicitObjectPtr > &OutGeoms, Chaos::FShapesArray &OutShapes)>
 
- Public Types inherited from TPhysicsProxy< FGeometryCollectionPhysicsProxy, FStubGeometryCollectionData, FGeometryCollectionProxyTimestamp >
using FParticleType = FGeometryCollectionPhysicsProxy
 
using FParticlesType = Chaos::FPBDRigidParticles
 
using FIntArray = Chaos::TArrayCollectionArray< int32 >
 

Public Member Functions

 FGeometryCollectionPhysicsProxy ()=delete
 
CHAOS_API FGeometryCollectionPhysicsProxy (UObject *InOwner, FGeometryDynamicCollection &GameThreadCollection, const FSimulationParameters &SimulationParameters, FCollisionFilterData InSimFilter, FCollisionFilterData InQueryFilter, FGuid InCollectorGuid=FGuid::NewGuid(), const Chaos::EMultiBufferMode BufferMode=Chaos::EMultiBufferMode::TripleGuarded)
 
CHAOS_API FGeometryCollectionPhysicsProxy (UObject *InOwner, TSharedRef< FGeometryDynamicCollection > GameThreadCollection, const FSimulationParameters &SimulationParameters, FCollisionFilterData InSimFilter, FCollisionFilterData InQueryFilter, FGuid InCollectorGuid=FGuid::NewGuid(), const Chaos::EMultiBufferMode BufferMode=Chaos::EMultiBufferMode::TripleGuarded)
 
virtual CHAOS_API ~FGeometryCollectionPhysicsProxy ()
 
CHAOS_API void Initialize (Chaos::FPBDRigidsEvolutionBase *Evolution)
 
void Reset ()
 
bool IsInitializedOnPhysicsThread () const
 
CHAOS_API void InitializeBodiesPT (Chaos::FPBDRigidsSolver *RigidsSolver, typename Chaos::FPBDRigidsSolver::FParticlesType &Particles)
 
bool IsSimulating () const
 
Chaos::FParticleDataNewData ()
 
CHAOS_API void BufferGameState ()
 
void ClearAccumulatedData ()
 
CHAOS_API void BufferPhysicsResults_Internal (Chaos::FPBDRigidsSolver *CurrentSolver, Chaos::FDirtyGeometryCollectionData &BufferData)
 
CHAOS_API void BufferPhysicsResults_External (Chaos::FDirtyGeometryCollectionData &BufferData)
 
CHAOS_API void PushStateOnGameThread (Chaos::FPBDRigidsSolver *InSolver)
 
CHAOS_API void PushToPhysicsState ()
 
CHAOS_API void FlipBuffer ()
 
CHAOS_API bool PullFromPhysicsState (const Chaos::FDirtyGeometryCollectionData &BufferData, const int32 SolverSyncTimestamp, const Chaos::FDirtyGeometryCollectionData *NextPullData=nullptr, const Chaos::FRealSingle *Alpha=nullptr, const Chaos::FDirtyRigidParticleReplicationErrorData *Error=nullptr, const Chaos::FReal AsyncFixedTimeStep=0)
 
bool IsDirty ()
 
CHAOS_API void SyncBeforeDestroy ()
 
CHAOS_API void OnRemoveFromSolver (Chaos::FPBDRigidsSolver *RBDSolver)
 
CHAOS_API void OnRemoveFromScene ()
 
CHAOS_API void OnUnregisteredFromSolver ()
 
void SetCollisionParticlesPerObjectFraction (float CollisionParticlesPerObjectFractionIn)
 
TArray< FClusterHandle * > & GetSolverClusterHandles ()
 
TArray< FClusterHandle * > & GetSolverParticleHandles ()
 
FClusterHandleGetSolverClusterHandle_Internal (int32 Index) const
 
const FGeometryCollectionResultsGetConsumerResultsGT () const
 
CHAOS_API void BufferFieldCommand_External (FFieldSystemCommand &&Command)
 
CHAOS_API void BufferCommand (Chaos::FPBDRigidsSolver *RigidsSolver, const FFieldSystemCommand &Command)
 
CHAOS_API void BufferFieldCommand_Internal (Chaos::FPBDRigidsSolver *RigidsSolver, const FFieldSystemCommand &Command)
 
CHAOS_API void FieldForcesUpdateCallback (Chaos::FPBDRigidsSolver *RigidSolver)
 
CHAOS_API void FieldParameterUpdateCallback (Chaos::FPBDRigidsSolver *RigidSolver, const bool bUpdateViews=true)
 
void UpdateKinematicBodiesCallback (const FParticlesType &InParticles, const float InDt, const float InTime, FKinematicProxy &InKinematicProxy)
 
void StartFrameCallback (const float InDt, const float InTime)
 
void EndFrameCallback (const float InDt)
 
void BindParticleCallbackMapping (Chaos::TArrayCollectionArray< PhysicsProxyWrapper > &PhysicsProxyReverseMap, Chaos::TArrayCollectionArray< int32 > &ParticleIDReverseMap)
 
void CreateRigidBodyCallback (FParticlesType &InOutParticles)
 
void DisableCollisionsCallback (TSet< TTuple< int32, int32 > > &InPairs)
 
void AddForceCallback (FParticlesType &InParticles, const float InDt, const int32 InIndex)
 
bool IsGTCollectionDirty () const
 
CHAOS_API void SetWorldTransform_External (const FTransform &WorldTransform)
 
const FTransformGetPreviousWorldTransform_External () const
 
const FTransformGetWorldTransform_External ()
 
CHAOS_API void SetUseStaticMeshCollisionForTraces_External (bool bInUseStaticMeshCollisionForTraces)
 
const TArray< FClusterHandle * > GetParticles () const
 
const TArray< FClusterHandle * > GetUnorderedParticles_Internal () const
 
FClusterHandleGetParticle_Internal (int32 Index) const
 
const FSimulationParametersGetSimParameters () const
 
FSimulationParametersGetSimParameters ()
 
FGeometryDynamicCollectionGetPhysicsCollection ()
 
FGeometryDynamicCollectionGetExternalCollection ()
 
TArray< TUniquePtr< FParticle > > & GetExternalParticles ()
 
TArray< TUniquePtr< FParticle > > & GetUnorderedParticles_External ()
 
CHAOS_API FParticleGetParticleByIndex_External (int32 Index)
 
CHAOS_API const FParticleGetParticleByIndex_External (int32 Index) const
 
CHAOS_API FParticleHandleGetParticleByIndex_Internal (int32 Index)
 
CHAOS_API const FParticleHandleGetParticleByIndex_Internal (int32 Index) const
 
FParticleGetInitialRootParticle_External ()
 
const FParticleGetInitialRootParticle_External () const
 
FParticleHandleGetInitialRootParticle_Internal ()
 
const FParticleHandleGetInitialRootParticle_Internal () const
 
CHAOS_API void GetRelevantParticleHandles (TArray< Chaos::TGeometryParticleHandle< Chaos::FReal, 3 > * > &Handles, const Chaos::FPBDRigidsSolver *RigidSolver, EFieldResolutionType ResolutionType)
 
CHAOS_API void GetFilteredParticleHandles (TArray< Chaos::TGeometryParticleHandle< Chaos::FReal, 3 > * > &Handles, const Chaos::FPBDRigidsSolver *RigidSolver, const EFieldFilterType FilterType, const EFieldObjectType ObjectType)
 
virtual voidGetHandleUnsafe () const override
 
int32 GetTransformGroupIndexFromHandle (const FParticleHandle *Handle) const
 
void GetTransformGroupIndicesFromHandles (const TArray< FParticleHandle * > Handles, TArray< int32 > &IndicesOut) const
 
FGeometryCollectionItemIndex GetInternalClusterParentItemIndex_External (int32 ChildTransformIndex) const
 
const TArray< int32 > * FindInternalClusterChildrenTransformIndices_External (FGeometryCollectionItemIndex ItemIndex) const
 
FGeometryCollectionItemIndex GetItemIndexFromGTParticle_External (const FParticle *GTPParticle) const
 
FGeometryCollectionItemIndex GetItemIndexFromGTParticleNoInternalCluster_External (const FParticle *GTPParticle) const
 
CHAOS_API FName GetTransformName_External (FGeometryCollectionItemIndex ItemIndex) const
 
bool GetIsObjectDynamic () const
 
CHAOS_API void DisableParticles_External (TArray< int32 > &&TransformGroupIndices)
 
CHAOS_API void ApplyForceAt_External (FVector Force, FVector WorldLocation)
 
CHAOS_API void ApplyImpulseAt_External (FVector Force, FVector WorldLocation)
 
CHAOS_API void BreakClusters_External (TArray< FGeometryCollectionItemIndex > &&ItemIndices)
 
CHAOS_API void BreakActiveClusters_External ()
 
CHAOS_API void SetAnchoredByIndex_External (int32 Index, bool bAnchored)
 
CHAOS_API void SetAnchoredByTransformedBox_External (const FBox &Box, const FTransform &Transform, bool bAnchored, int32 MaxLevel=INDEX_NONE)
 
CHAOS_API void RemoveAllAnchors_External ()
 
CHAOS_API void ApplyExternalStrain_External (FGeometryCollectionItemIndex ItemIndex, const FVector &WorldLocation, float Radius, int32 PropagationDepth, float PropagationFactor, float StrainValue)
 
CHAOS_API void ApplyInternalStrain_External (FGeometryCollectionItemIndex ItemIndex, const FVector &WorldLocation, float Radius, int32 PropagationDepth, float PropagationFactor, float StrainValue)
 
CHAOS_API void ApplyBreakingLinearVelocity_External (FGeometryCollectionItemIndex ItemIndex, const FVector &LinearVelocity)
 
CHAOS_API void ApplyBreakingAngularVelocity_External (FGeometryCollectionItemIndex ItemIndex, const FVector &AngularVelocity)
 
CHAOS_API void ApplyLinearVelocity_External (FGeometryCollectionItemIndex ItemIndex, const FVector &LinearVelocity)
 
CHAOS_API void ApplyAngularVelocity_External (FGeometryCollectionItemIndex ItemIndex, const FVector &AngularVelocity)
 
CHAOS_API void SetProxyDirty_External ()
 
CHAOS_API void SetEnableDamageFromCollision_External (bool bEnable)
 
CHAOS_API void SetNotifyBreakings_External (bool bNotify)
 
CHAOS_API void SetNotifyRemovals_External (bool bNotify)
 
CHAOS_API void SetNotifyCrumblings_External (bool bNotify, bool bIncludeChildren)
 
CHAOS_API void SetNotifyGlobalBreakings_External (bool bNotify)
 
CHAOS_API void SetNotifyGlobalRemovals_External (bool bNotify)
 
CHAOS_API void SetNotifyGlobalCrumblings_External (bool bNotify, bool bIncludeChildren)
 
CHAOS_API float ComputeMaterialBasedDamageThreshold_Internal (Chaos::FPBDRigidClusteredParticleHandle &ClusteredParticle) const
 
FProxyInterpolationBaseGetInterpolationData ()
 
const FProxyInterpolationBaseGetInterpolationData () const
 
void SetReplicationMode (EReplicationMode Mode)
 
EReplicationMode GetReplicationMode () const
 
 UE_DEPRECATED (5.7, "Use the overload that takes a FCombinedShapeFilterData instead") CHAOS_API void UpdateFilterData_External(const FCollisionFilterData &NewSimFilter
 
CHAOS_API void UpdateFilterData_External (const Chaos::Filter::FCombinedShapeFilterData &NewShapeFilter)
 
CHAOS_API void UpdatePerParticleFilterData_External (const TArray< FParticleCollisionFilterData > &Data)
 
CHAOS_API void SetDamageThresholds_External (const TArray< float > &DamageThresholds)
 
CHAOS_API void SetDamagePropagationData_External (bool bEnabled, float BreakDamagePropagationFactor, float ShockDamagePropagationFactor)
 
CHAOS_API void SetDamageModel_External (EDamageModelTypeEnum DamageModel)
 
CHAOS_API void SetUseMaterialDamageModifiers_External (bool bUseMaterialDamageModifiers)
 
CHAOS_API void SetMaterialOverrideMassScaleMultiplier_External (float InMultiplier)
 
CHAOS_API void SetEnableGravity_External (bool EnableGravity_External)
 
CHAOS_API void SetGravityGroupIndex_External (int32 GravityGroupIndex)
 
CHAOS_API void SetOneWayInteractionLevel_External (int32 OneWayInteractionLevel)
 
CHAOS_API void SetPhysicsMaterial_External (const Chaos::FMaterialHandle &MaterialHandle)
 
void SetPostPhysicsSyncCallback (TFunction< void()> Callback)
 
void SetPostParticlesCreatedCallback (TFunction< void()> Callback)
 
CHAOS_API FClusterHandleGetInitialRootHandle_Internal () const
 
CHAOS_API TArray< Chaos::FPhysicsObjectHandleGetAllPhysicsObjects () const
 
CHAOS_API TArray< Chaos::FPhysicsObjectHandleGetAllPhysicsObjectIncludingNulls () const
 
CHAOS_API Chaos::FPhysicsObjectHandle GetPhysicsObjectByIndex (int32 Index) const
 
CHAOS_API void RebaseAllGameThreadCollectionTransformsOnNewWorldTransform_External ()
 
int32 GetNumParticles () const
 
int32 GetNumTransforms () const
 
void SetCreateTraceCollisionGeometryCallback (FCreateTraceCollisionGeometryCallback InCreateGeometryCallback)
 
CHAOS_API void CreateChildrenGeometry_Internal ()
 
int32 GetFromParticleToTransformIndex (int32 Index) const
 
bool GetSkipChildToParentUpdateWhenInClusterUnion () const
 
void SetSkipChildToParentUpdateWhenInClusterUnion (bool bValue)
 
template<typename ErrorDataType >
ErrorDataTypeGetOrCreateErrorInterpolationData ()
 
template<class SOLVER_TYPE >
SOLVER_TYPEGetSolver () const
 
- Public Member Functions inherited from TPhysicsProxy< FGeometryCollectionPhysicsProxy, FStubGeometryCollectionData, FGeometryCollectionProxyTimestamp >
 TPhysicsProxy ()
 
 TPhysicsProxy (UObject *InOwner)
 
virtual ~TPhysicsProxy ()
 
bool IsSimulating () const
 
void UpdateKinematicBodiesCallback (const FParticlesType &InParticles, const float InDt, const float InTime, FKinematicProxy &InKinematicProxy)
 
void StartFrameCallback (const float InDt, const float InTime)
 
void EndFrameCallback (const float InDt)
 
void CreateRigidBodyCallback (FParticlesType &InOutParticles)
 
void DisableCollisionsCallback (TSet< TTuple< int32, int32 > > &InPairs)
 
void AddForceCallback (FParticlesType &InParticles, const float InDt, const int32 InIndex)
 
void BindParticleCallbackMapping (Chaos::TArrayCollectionArray< PhysicsProxyWrapper > &PhysicsProxyReverseMap, Chaos::TArrayCollectionArray< int32 > &ParticleIDReverseMap)
 
void ClearAccumulatedData ()
 
void SyncBeforeDestroy ()
 
void OnRemoveFromScene ()
 
bool IsDirty ()
 
voidGetUserData () const
 
Chaos::FRigidTransform3 GetTransform () const
 
FORCEINLINE_DEBUGGABLE FGeometryCollectionProxyTimestampGetSyncTimestampTyped ()
 
- Public Member Functions inherited from IPhysicsProxyBase
 IPhysicsProxyBase (EPhysicsProxyType InType, UObject *InOwner, TSharedPtr< FProxyTimestampBase, ESPMode::ThreadSafe > InProxyTimeStamp)
 
UObjectGetOwner () const
 
template<class SOLVER_TYPE >
SOLVER_TYPEGetSolver () const
 
Chaos::FPhysicsSolverBaseGetSolverBase () const
 
template<class SOLVER_TYPE = Chaos::FPhysicsSolver>
void SetSolver (SOLVER_TYPE *InSolver)
 
EPhysicsProxyType GetType () const
 
int32 GetDirtyIdx () const
 
void SetDirtyIdx (const int32 Idx)
 
void ResetDirtyIdx ()
 
void MarkDeleted ()
 
bool GetMarkedDeleted () const
 
TSharedPtr< FProxyTimestampBase, ESPMode::ThreadSafeGetSyncTimestamp () const
 
bool IsInitialized () const
 
void SetInitialized (const int32 InitializeStep)
 
int32 GetInitializedStep () const
 
int32 GetIgnoreDataOnStep_Internal () const
 
IPhysicsProxyBaseGetParentProxy () const
 
void SetParentProxy (IPhysicsProxyBase *InProxy)
 

Static Public Member Functions

static CHAOS_API void InitializeDynamicCollection (FGeometryDynamicCollection &DynamicCollection, const FGeometryCollection &RestCollection, const FSimulationParameters &Params)
 
static constexpr EPhysicsProxyType ConcreteType ()
 
static CHAOS_API bool NeedToInitializeSharedCollisionStructures (const FGeometryCollection &RestCollection)
 
static CHAOS_API void InitializeSharedCollisionStructures (Chaos::FErrorReporter &ErrorReporter, FGeometryCollection &RestCollection, const FSharedSimulationParameters &SharedParams)
 
static CHAOS_API int32 CalculateAndSetLevel (int32 TransformGroupIdx, const TManagedArray< int32 > &Parent, TManagedArray< int32 > &Levels)
 
- Static Public Member Functions inherited from TPhysicsProxy< FGeometryCollectionPhysicsProxy, FStubGeometryCollectionData, FGeometryCollectionProxyTimestamp >
static constexpr EPhysicsProxyType ConcreteType ()
 
- Static Public Member Functions inherited from IPhysicsProxyBase
static float GetRenderInterpErrorCorrectionDuration ()
 
static float GetRenderInterpMaximumErrorCorrectionBeforeSnapping ()
 
static float GetRenderInterpErrorVelocitySmoothingDuration ()
 
static bool GetRenderInterpDebugDraw ()
 
static float GetRenderInterpErrorDirectionalDecayMultiplier ()
 

Public Attributes

const FCollisionFilterDataNewQueryFilter
 

Protected Member Functions

bool RebaseParticleGameThreadCollectionTransformOnNewWorldTransform_External (int32 ParticleIndex, const TManagedArray< FTransform > &MassToLocal, bool bIsComponentTransformScaled, const FTransform &ComponentScaleTransform)
 
CHAOS_API float ComputeMaterialBasedDamageThreshold_Internal (int32 TransformIndex) const
 
CHAOS_API float ComputeUserDefinedDamageThreshold_Internal (int32 TransformIndex) const
 
CHAOS_API float AdjustMassForScale (float Mass) const
 
CHAOS_API Chaos::FVec3f AdjustInertiaForScale (const Chaos::FVec3f &Inertia) const
 
CHAOS_API Chaos::TPBDGeometryCollectionParticleHandle< Chaos::FReal, 3 > * BuildNonClusters_Internal (const uint32 CollectionClusterIndex, Chaos::FPBDRigidsSolver *RigidsSolver, float Mass, Chaos::FVec3f Inertia, const Chaos::FUniqueIdx *ExistingIndex)
 
CHAOS_API Chaos::FPBDRigidClusteredParticleHandleBuildClusters_Internal (const uint32 CollectionClusterIndex, TArray< Chaos::FPBDRigidParticleHandle * > &ChildHandles, const TArray< int32 > &ChildTransformGroupIndices, const Chaos::FClusterCreationParameters &Parameters, const Chaos::FUniqueIdx *ExistingIndex)
 
CHAOS_API void SetSleepingState (const Chaos::FPBDRigidsSolver &RigidsSolver)
 
CHAOS_API void DirtyAllParticles (const Chaos::FPBDRigidsSolver &RigidsSolver)
 
CHAOS_API void SetClusteredParticleKinematicTarget_Internal (Chaos::FPBDRigidClusteredParticleHandle *Handle, const FTransform &WorldTransform)
 
CHAOS_API void PrepareBufferData (Chaos::FDirtyGeometryCollectionData &BufferData, const FGeometryDynamicCollection &ThreadCollection, Chaos::FReal SolverLastDt=0.0)
 
CHAOS_API void CreateNonClusteredParticles (Chaos::FPBDRigidsSolver *RigidsSolver, const FGeometryCollection &RestCollection, const FGeometryDynamicCollection &DynamicCollection)
 
CHAOS_API Chaos::FPBDRigidClusteredParticleHandleFindClusteredParticleHandleByItemIndex_Internal (FGeometryCollectionItemIndex ItemIndex) const
 
CHAOS_API void UpdateDamageThreshold_Internal ()
 
CHAOS_API void ScaleClusterGeometry_Internal (const FVector &WorldScale)
 
CHAOS_API void SetWorldTransform_Internal (const FTransform &WorldTransform, bool bInSkipChildToParentUpdateWhenInClusterUnion=false)
 
 UE_DEPRECATED (5.7, "Use the overload that takes a FCombinedShapeFilterData instead") CHAOS_API void SetFilterData_Internal(const FCollisionFilterData &NewSimFilter
 
CHAOS_API void SetFilterData_Internal (const Chaos::Filter::FCombinedShapeFilterData &NewShapeFilter)
 
CHAOS_API void SetPerParticleFilterData_Internal (const TArray< FParticleCollisionFilterData > &PerParticleData)
 
CHAOS_API void SetDamagePropagationData_Internal (bool bEnabled, float BreakDamagePropagationFactor, float ShockDamagePropagationFactor)
 
CHAOS_API void SetEnableGravity_Internal (bool bEnabled)
 
CHAOS_API void SetDamageThresholds_Internal (const TArray< float > &DamageThresholds)
 
CHAOS_API void SetDamageModel_Internal (EDamageModelTypeEnum DamageModel)
 
CHAOS_API void SetUseMaterialDamageModifiers_Internal (bool bUseMaterialDamageModifiers)
 
CHAOS_API void SetMaterialOverrideMassScaleMultiplier_Internal (float InMultiplier)
 
CHAOS_API void SetGravityGroupIndex_Internal (int32 GravityGroupIndex)
 
CHAOS_API void SetOneWayInteractionLevel_Internal (int32 InOneWayInteractionLevel)
 
CHAOS_API void SetPhysicsMaterial_Internal (const Chaos::FMaterialHandle &MaterialHandle)
 
- Protected Member Functions inherited from IPhysicsProxyBase
virtual CHAOS_API ~IPhysicsProxyBase ()
 
template<typename TProxyTimeStamp >
FORCEINLINE_DEBUGGABLE TProxyTimeStampGetSyncTimestampAs ()
 
CHAOS_API int32 GetSolverSyncTimestamp_External () const
 

Static Protected Member Functions

static CHAOS_API int32 CalculateHierarchyLevel (const FGeometryDynamicCollection &DynamicCollection, int32 TransformIndex)
 

Additional Inherited Members

- Protected Attributes inherited from IPhysicsProxyBase
Chaos::FPhysicsSolverBaseSolver
 
UObjectOwner
 
EPhysicsProxyType Type
 
int32 InitializedOnStep = INDEX_NONE
 
int32 IgnoreDataOnStep_Internal = INDEX_NONE
 

Detailed Description

Class to manage sharing data between the game thread and the simulation thread (which may not be different than the game thread) for a FGeometryDynamicCollection.

Member Typedef Documentation

◆ Base

◆ FClusterHandle

◆ FCreateTraceCollisionGeometryCallback

◆ FParticle

◆ FParticleHandle

◆ FSimplicial

Member Enumeration Documentation

◆ EReplicationMode

Enumerator
Unknown 
Server 
Client 

Constructor & Destructor Documentation

◆ FGeometryCollectionPhysicsProxy() [1/3]

FGeometryCollectionPhysicsProxy::FGeometryCollectionPhysicsProxy ( )
delete

◆ FGeometryCollectionPhysicsProxy() [2/3]

PRAGMA_DISABLE_DEPRECATION_WARNINGS FGeometryCollectionPhysicsProxy::FGeometryCollectionPhysicsProxy ( UObject InOwner,
FGeometryDynamicCollection GameThreadCollection,
const FSimulationParameters SimulationParameters,
FCollisionFilterData  InSimFilter,
FCollisionFilterData  InQueryFilter,
FGuid  InCollectorGuid = FGuid::NewGuid(),
const Chaos::EMultiBufferMode  BufferMode = Chaos::EMultiBufferMode::TripleGuarded 
)

InOwner InDynamicCollection game thread owned geometry collection. InInitFunc callback invoked from Initialize(). InCacheSyncFunc callback invoked from PullFromPhysicsState(). InFinalSyncFunc callback invoked from SyncBeforeDestory().

◆ FGeometryCollectionPhysicsProxy() [3/3]

PRAGMA_ENABLE_DEPRECATION_WARNINGS FGeometryCollectionPhysicsProxy::FGeometryCollectionPhysicsProxy ( UObject InOwner,
TSharedRef< FGeometryDynamicCollection GameThreadCollection,
const FSimulationParameters SimulationParameters,
FCollisionFilterData  InSimFilter,
FCollisionFilterData  InQueryFilter,
FGuid  InCollectorGuid = FGuid::NewGuid(),
const Chaos::EMultiBufferMode  BufferMode = Chaos::EMultiBufferMode::TripleGuarded 
)

◆ ~FGeometryCollectionPhysicsProxy()

FGeometryCollectionPhysicsProxy::~FGeometryCollectionPhysicsProxy ( )
virtual

Member Function Documentation

◆ AddForceCallback()

void FGeometryCollectionPhysicsProxy::AddForceCallback ( FParticlesType InParticles,
const float  InDt,
const int32  InIndex 
)
inline

◆ AdjustInertiaForScale()

Chaos::FVec3f FGeometryCollectionPhysicsProxy::AdjustInertiaForScale ( const Chaos::FVec3f Inertia) const
protected

adjust inertia to account for per component scale properties ( from material override and world transform scale )

◆ AdjustMassForScale()

float FGeometryCollectionPhysicsProxy::AdjustMassForScale ( float  Mass) const
protected

adjust scalar mass to account for per component scale properties ( from material override and world transform scale )

◆ ApplyAngularVelocity_External()

void FGeometryCollectionPhysicsProxy::ApplyAngularVelocity_External ( FGeometryCollectionItemIndex  ItemIndex,
const FVector AngularVelocity 
)

◆ ApplyBreakingAngularVelocity_External()

void FGeometryCollectionPhysicsProxy::ApplyBreakingAngularVelocity_External ( FGeometryCollectionItemIndex  ItemIndex,
const FVector AngularVelocity 
)

◆ ApplyBreakingLinearVelocity_External()

void FGeometryCollectionPhysicsProxy::ApplyBreakingLinearVelocity_External ( FGeometryCollectionItemIndex  ItemIndex,
const FVector LinearVelocity 
)

◆ ApplyExternalStrain_External()

void FGeometryCollectionPhysicsProxy::ApplyExternalStrain_External ( FGeometryCollectionItemIndex  ItemIndex,
const FVector WorldLocation,
float  Radius,
int32  PropagationDepth,
float  PropagationFactor,
float  StrainValue 
)

◆ ApplyForceAt_External()

void FGeometryCollectionPhysicsProxy::ApplyForceAt_External ( FVector  Force,
FVector  WorldLocation 
)

◆ ApplyImpulseAt_External()

void FGeometryCollectionPhysicsProxy::ApplyImpulseAt_External ( FVector  Force,
FVector  WorldLocation 
)

◆ ApplyInternalStrain_External()

void FGeometryCollectionPhysicsProxy::ApplyInternalStrain_External ( FGeometryCollectionItemIndex  ItemIndex,
const FVector WorldLocation,
float  Radius,
int32  PropagationDepth,
float  PropagationFactor,
float  StrainValue 
)

◆ ApplyLinearVelocity_External()

void FGeometryCollectionPhysicsProxy::ApplyLinearVelocity_External ( FGeometryCollectionItemIndex  ItemIndex,
const FVector LinearVelocity 
)

◆ BindParticleCallbackMapping()

void FGeometryCollectionPhysicsProxy::BindParticleCallbackMapping ( Chaos::TArrayCollectionArray< PhysicsProxyWrapper > &  PhysicsProxyReverseMap,
Chaos::TArrayCollectionArray< int32 > &  ParticleIDReverseMap 
)
inline

◆ BreakActiveClusters_External()

void FGeometryCollectionPhysicsProxy::BreakActiveClusters_External ( )

◆ BreakClusters_External()

void FGeometryCollectionPhysicsProxy::BreakClusters_External ( TArray< FGeometryCollectionItemIndex > &&  ItemIndices)

◆ BufferCommand()

void FGeometryCollectionPhysicsProxy::BufferCommand ( Chaos::FPBDRigidsSolver RigidsSolver,
const FFieldSystemCommand Command 
)

◆ BufferFieldCommand_External()

void FGeometryCollectionPhysicsProxy::BufferFieldCommand_External ( FFieldSystemCommand &&  Command)

Enqueue a field Command to be processed by ProcessCommands() or FieldForcesUpdateCallback(). Game thread only

◆ BufferFieldCommand_Internal()

void FGeometryCollectionPhysicsProxy::BufferFieldCommand_Internal ( Chaos::FPBDRigidsSolver RigidsSolver,
const FFieldSystemCommand Command 
)

Enqueue a field Command to be processed by ProcessCommands() or FieldForcesUpdateCallback(). Physics thread only

◆ BufferGameState()

void FGeometryCollectionPhysicsProxy::BufferGameState ( )

◆ BufferPhysicsResults_External()

void FGeometryCollectionPhysicsProxy::BufferPhysicsResults_External ( Chaos::FDirtyGeometryCollectionData BufferData)

Push GT state into the PhysToGameInterchange for async physics

CONTEXT: GAMETHREAD Called per-tick when async is on after the simulation has completed. goal is collect current game thread data of the proxy so it can be used if no previous physics thread data is available for interpolating

◆ BufferPhysicsResults_Internal()

void FGeometryCollectionPhysicsProxy::BufferPhysicsResults_Internal ( Chaos::FPBDRigidsSolver CurrentSolver,
Chaos::FDirtyGeometryCollectionData BufferData 
)

Push PT state into the PhysToGameInterchange.

CONTEXT: PHYSICSTHREAD Called per-tick after the simulation has completed. The proxy should cache the results of their simulation into the local buffer.

◆ BuildClusters_Internal()

Chaos::FPBDRigidClusteredParticleHandle * FGeometryCollectionPhysicsProxy::BuildClusters_Internal ( const uint32  CollectionClusterIndex,
TArray< Chaos::FPBDRigidParticleHandle * > &  ChildHandles,
const TArray< int32 > &  ChildTransformGroupIndices,
const Chaos::FClusterCreationParameters Parameters,
const Chaos::FUniqueIdx ExistingIndex 
)
protected

Build a physics thread cluster parent particle. CollectionClusterIndex - the source geometry collection transform index. ChildHandles - physics particle handles of the cluster children. ChildTransformGroupIndices - geometry collection indices of the children. \P Parameters - uh, yeah... Other parameters.

◆ BuildNonClusters_Internal()

Chaos::TPBDGeometryCollectionParticleHandle< Chaos::FReal, 3 > * FGeometryCollectionPhysicsProxy::BuildNonClusters_Internal ( const uint32  CollectionClusterIndex,
Chaos::FPBDRigidsSolver RigidsSolver,
float  Mass,
Chaos::FVec3f  Inertia,
const Chaos::FUniqueIdx ExistingIndex 
)
protected

◆ CalculateAndSetLevel()

int32 FGeometryCollectionPhysicsProxy::CalculateAndSetLevel ( int32  TransformGroupIdx,
const TManagedArray< int32 > &  Parent,
TManagedArray< int32 > &  Levels 
)
static

Traverses the parents of TransformGroupIdx counting number of levels, and sets levels array value for TransformGroupIdx and its parents if not yet initialized. If level is already set, retrieve stored level. Uninitialized level array should be correct size and defaulted to zeros.

◆ CalculateHierarchyLevel()

int32 FGeometryCollectionPhysicsProxy::CalculateHierarchyLevel ( const FGeometryDynamicCollection DynamicCollection,
int32  TransformIndex 
)
staticprotected

Traverses the parents of TransformIndex in GeometryCollection, counting the number of levels until the next parent is INDEX_NONE.

◆ ClearAccumulatedData()

void FGeometryCollectionPhysicsProxy::ClearAccumulatedData ( )
inline

Called at the end of FPBDRigidsSolver::PushPhysicsStateExec().

◆ ComputeMaterialBasedDamageThreshold_Internal() [1/2]

float FGeometryCollectionPhysicsProxy::ComputeMaterialBasedDamageThreshold_Internal ( Chaos::FPBDRigidClusteredParticleHandle ClusteredParticle) const

◆ ComputeMaterialBasedDamageThreshold_Internal() [2/2]

float FGeometryCollectionPhysicsProxy::ComputeMaterialBasedDamageThreshold_Internal ( int32  TransformIndex) const
protected

◆ ComputeUserDefinedDamageThreshold_Internal()

float FGeometryCollectionPhysicsProxy::ComputeUserDefinedDamageThreshold_Internal ( int32  TransformIndex) const
protected

Compute user defined damage threshold for a specific transform this account for component level damage threshold as well as size specific ones

Parameters
DynamicCollectiondynamic collection to use
TransformIndexindex of the transform to compute the threshold for #return damage threshold value

◆ ConcreteType()

static constexpr EPhysicsProxyType FGeometryCollectionPhysicsProxy::ConcreteType ( )
inlinestaticconstexpr

◆ CreateChildrenGeometry_Internal()

void FGeometryCollectionPhysicsProxy::CreateChildrenGeometry_Internal ( )

◆ CreateNonClusteredParticles()

void FGeometryCollectionPhysicsProxy::CreateNonClusteredParticles ( Chaos::FPBDRigidsSolver RigidsSolver,
const FGeometryCollection RestCollection,
const FGeometryDynamicCollection DynamicCollection 
)
protected

◆ CreateRigidBodyCallback()

void FGeometryCollectionPhysicsProxy::CreateRigidBodyCallback ( FParticlesType InOutParticles)
inline

◆ DirtyAllParticles()

void FGeometryCollectionPhysicsProxy::DirtyAllParticles ( const Chaos::FPBDRigidsSolver RigidsSolver)
protected

◆ DisableCollisionsCallback()

void FGeometryCollectionPhysicsProxy::DisableCollisionsCallback ( TSet< TTuple< int32, int32 > > &  InPairs)
inline

◆ DisableParticles_External()

void FGeometryCollectionPhysicsProxy::DisableParticles_External ( TArray< int32 > &&  TransformGroupIndices)

◆ EndFrameCallback()

void FGeometryCollectionPhysicsProxy::EndFrameCallback ( const float  InDt)
inline

◆ FieldForcesUpdateCallback()

void FGeometryCollectionPhysicsProxy::FieldForcesUpdateCallback ( Chaos::FPBDRigidsSolver RigidSolver)

◆ FieldParameterUpdateCallback()

void FGeometryCollectionPhysicsProxy::FieldParameterUpdateCallback ( Chaos::FPBDRigidsSolver RigidSolver,
const bool  bUpdateViews = true 
)

◆ FindClusteredParticleHandleByItemIndex_Internal()

Chaos::FPBDRigidClusteredParticleHandle * FGeometryCollectionPhysicsProxy::FindClusteredParticleHandleByItemIndex_Internal ( FGeometryCollectionItemIndex  ItemIndex) const
protected

◆ FindInternalClusterChildrenTransformIndices_External()

const TArray< int32 > * FGeometryCollectionPhysicsProxy::FindInternalClusterChildrenTransformIndices_External ( FGeometryCollectionItemIndex  ItemIndex) const
inline

◆ FlipBuffer()

void FGeometryCollectionPhysicsProxy::FlipBuffer ( )

Does nothing as BufferPhysicsResults() already did this.

CONTEXT: PHYSICSTHREAD (Write Locked) Called by the physics thread to signal that it is safe to perform any double-buffer flips here. The physics thread has pre-locked an RW lock for this operation so the game thread won't be reading the data

◆ GetAllPhysicsObjectIncludingNulls()

TArray< Chaos::FPhysicsObjectHandle > FGeometryCollectionPhysicsProxy::GetAllPhysicsObjectIncludingNulls ( ) const

◆ GetAllPhysicsObjects()

TArray< Chaos::FPhysicsObjectHandle > FGeometryCollectionPhysicsProxy::GetAllPhysicsObjects ( ) const

◆ GetConsumerResultsGT()

const FGeometryCollectionResults * FGeometryCollectionPhysicsProxy::GetConsumerResultsGT ( ) const
inline

◆ GetExternalCollection()

FGeometryDynamicCollection & FGeometryCollectionPhysicsProxy::GetExternalCollection ( )
inline

◆ GetExternalParticles()

TArray< TUniquePtr< FParticle > > & FGeometryCollectionPhysicsProxy::GetExternalParticles ( )
inline

◆ GetFilteredParticleHandles()

void FGeometryCollectionPhysicsProxy::GetFilteredParticleHandles ( TArray< Chaos::TGeometryParticleHandle< Chaos::FReal, 3 > * > &  Handles,
const Chaos::FPBDRigidsSolver RigidSolver,
const EFieldFilterType  FilterType,
const EFieldObjectType  ObjectType 
)

Get all the geometry collection particle handles filtered by object state

◆ GetFromParticleToTransformIndex()

int32 FGeometryCollectionPhysicsProxy::GetFromParticleToTransformIndex ( int32  Index) const
inline

◆ GetHandleUnsafe()

virtual void * FGeometryCollectionPhysicsProxy::GetHandleUnsafe ( ) const
inlineoverridevirtual

Reimplemented from IPhysicsProxyBase.

◆ GetInitialRootHandle_Internal()

FGeometryCollectionPhysicsProxy::FClusterHandle * FGeometryCollectionPhysicsProxy::GetInitialRootHandle_Internal ( ) const

◆ GetInitialRootParticle_External() [1/2]

FParticle * FGeometryCollectionPhysicsProxy::GetInitialRootParticle_External ( )
inline

◆ GetInitialRootParticle_External() [2/2]

const FParticle * FGeometryCollectionPhysicsProxy::GetInitialRootParticle_External ( ) const
inline

◆ GetInitialRootParticle_Internal() [1/2]

FParticleHandle * FGeometryCollectionPhysicsProxy::GetInitialRootParticle_Internal ( )
inline

◆ GetInitialRootParticle_Internal() [2/2]

const FParticleHandle * FGeometryCollectionPhysicsProxy::GetInitialRootParticle_Internal ( ) const
inline

◆ GetInternalClusterParentItemIndex_External()

FGeometryCollectionItemIndex FGeometryCollectionPhysicsProxy::GetInternalClusterParentItemIndex_External ( int32  ChildTransformIndex) const
inline

◆ GetInterpolationData() [1/2]

FProxyInterpolationBase * FGeometryCollectionPhysicsProxy::GetInterpolationData ( )
inline

◆ GetInterpolationData() [2/2]

const FProxyInterpolationBase * FGeometryCollectionPhysicsProxy::GetInterpolationData ( ) const
inline

◆ GetIsObjectDynamic()

bool FGeometryCollectionPhysicsProxy::GetIsObjectDynamic ( ) const
inline

◆ GetItemIndexFromGTParticle_External()

FGeometryCollectionItemIndex FGeometryCollectionPhysicsProxy::GetItemIndexFromGTParticle_External ( const FParticle GTPParticle) const
inline

◆ GetItemIndexFromGTParticleNoInternalCluster_External()

FGeometryCollectionItemIndex FGeometryCollectionPhysicsProxy::GetItemIndexFromGTParticleNoInternalCluster_External ( const FParticle GTPParticle) const
inline

◆ GetNumParticles()

int32 FGeometryCollectionPhysicsProxy::GetNumParticles ( ) const
inline

◆ GetNumTransforms()

int32 FGeometryCollectionPhysicsProxy::GetNumTransforms ( ) const
inline

◆ GetOrCreateErrorInterpolationData()

template<typename ErrorDataType >
ErrorDataType * FGeometryCollectionPhysicsProxy::GetOrCreateErrorInterpolationData ( )
inline

Get or create a derived FProxyInterpolationBase that handles render interpolation error corrections

◆ GetParticle_Internal()

FClusterHandle * FGeometryCollectionPhysicsProxy::GetParticle_Internal ( int32  Index) const
inline

◆ GetParticleByIndex_External() [1/2]

FGeometryCollectionPhysicsProxy::FParticle * FGeometryCollectionPhysicsProxy::GetParticleByIndex_External ( int32  Index)

◆ GetParticleByIndex_External() [2/2]

const FGeometryCollectionPhysicsProxy::FParticle * FGeometryCollectionPhysicsProxy::GetParticleByIndex_External ( int32  Index) const

◆ GetParticleByIndex_Internal() [1/2]

FGeometryCollectionPhysicsProxy::FParticleHandle * FGeometryCollectionPhysicsProxy::GetParticleByIndex_Internal ( int32  Index)

◆ GetParticleByIndex_Internal() [2/2]

const FGeometryCollectionPhysicsProxy::FParticleHandle * FGeometryCollectionPhysicsProxy::GetParticleByIndex_Internal ( int32  Index) const

◆ GetParticles()

const TArray< FClusterHandle * > FGeometryCollectionPhysicsProxy::GetParticles ( ) const
inline

◆ GetPhysicsCollection()

FGeometryDynamicCollection & FGeometryCollectionPhysicsProxy::GetPhysicsCollection ( )
inline

◆ GetPhysicsObjectByIndex()

Chaos::FPhysicsObjectHandle FGeometryCollectionPhysicsProxy::GetPhysicsObjectByIndex ( int32  Index) const

◆ GetPreviousWorldTransform_External()

const FTransform & FGeometryCollectionPhysicsProxy::GetPreviousWorldTransform_External ( ) const
inline

◆ GetRelevantParticleHandles()

void FGeometryCollectionPhysicsProxy::GetRelevantParticleHandles ( TArray< Chaos::TGeometryParticleHandle< Chaos::FReal, 3 > * > &  Handles,
const Chaos::FPBDRigidsSolver RigidSolver,
EFieldResolutionType  ResolutionType 
)
  • Get all the geometry collection particle handles based on the processing resolution

◆ GetReplicationMode()

EReplicationMode FGeometryCollectionPhysicsProxy::GetReplicationMode ( ) const
inline

◆ GetSimParameters() [1/2]

FSimulationParameters & FGeometryCollectionPhysicsProxy::GetSimParameters ( )
inline

◆ GetSimParameters() [2/2]

const FSimulationParameters & FGeometryCollectionPhysicsProxy::GetSimParameters ( ) const
inline

◆ GetSkipChildToParentUpdateWhenInClusterUnion()

bool FGeometryCollectionPhysicsProxy::GetSkipChildToParentUpdateWhenInClusterUnion ( ) const
inline

◆ GetSolver()

template<class SOLVER_TYPE >
SOLVER_TYPE * IPhysicsProxyBase::GetSolver ( ) const
inline

Proxy publics

◆ GetSolverClusterHandle_Internal()

FClusterHandle * FGeometryCollectionPhysicsProxy::GetSolverClusterHandle_Internal ( int32  Index) const
inline

◆ GetSolverClusterHandles()

TArray< FClusterHandle * > & FGeometryCollectionPhysicsProxy::GetSolverClusterHandles ( )
inline

◆ GetSolverParticleHandles()

TArray< FClusterHandle * > & FGeometryCollectionPhysicsProxy::GetSolverParticleHandles ( )
inline

◆ GetTransformGroupIndexFromHandle()

int32 FGeometryCollectionPhysicsProxy::GetTransformGroupIndexFromHandle ( const FParticleHandle Handle) const
inline

◆ GetTransformGroupIndicesFromHandles()

void FGeometryCollectionPhysicsProxy::GetTransformGroupIndicesFromHandles ( const TArray< FParticleHandle * >  Handles,
TArray< int32 > &  IndicesOut 
) const
inline

◆ GetTransformName_External()

FName FGeometryCollectionPhysicsProxy::GetTransformName_External ( FGeometryCollectionItemIndex  ItemIndex) const

◆ GetUnorderedParticles_External()

TArray< TUniquePtr< FParticle > > & FGeometryCollectionPhysicsProxy::GetUnorderedParticles_External ( )
inline

◆ GetUnorderedParticles_Internal()

const TArray< FClusterHandle * > FGeometryCollectionPhysicsProxy::GetUnorderedParticles_Internal ( ) const
inline

◆ GetWorldTransform_External()

const FTransform & FGeometryCollectionPhysicsProxy::GetWorldTransform_External ( )
inline

◆ Initialize()

void FGeometryCollectionPhysicsProxy::Initialize ( Chaos::FPBDRigidsEvolutionBase Evolution)

Construct PTDynamicCollection, copying attributes from the game thread, and prepare for simulation.

◆ InitializeBodiesPT()

void FGeometryCollectionPhysicsProxy::InitializeBodiesPT ( Chaos::FPBDRigidsSolver RigidsSolver,
typename Chaos::FPBDRigidsSolver::FParticlesType Particles 
)

Finish initialization on the physics thread.

Called by solver command registered by FPBDRigidsSolver::RegisterObject().

◆ InitializeDynamicCollection()

void FGeometryCollectionPhysicsProxy::InitializeDynamicCollection ( FGeometryDynamicCollection DynamicCollection,
const FGeometryCollection RestCollection,
const FSimulationParameters Params 
)
static

◆ InitializeSharedCollisionStructures()

void FGeometryCollectionPhysicsProxy::InitializeSharedCollisionStructures ( Chaos::FErrorReporter ErrorReporter,
FGeometryCollection RestCollection,
const FSharedSimulationParameters SharedParams 
)
static

NOTE - Making any changes to data stored on the rest collection below MUST be accompanied by a rotation of the DDC key in FDerivedDataGeometryCollectionCooker::GetVersionString

◆ IsDirty()

bool FGeometryCollectionPhysicsProxy::IsDirty ( )
inline

◆ IsGTCollectionDirty()

bool FGeometryCollectionPhysicsProxy::IsGTCollectionDirty ( ) const
inline

◆ IsInitializedOnPhysicsThread()

bool FGeometryCollectionPhysicsProxy::IsInitializedOnPhysicsThread ( ) const
inline

◆ IsSimulating()

bool FGeometryCollectionPhysicsProxy::IsSimulating ( ) const
inline

◆ NeedToInitializeSharedCollisionStructures()

bool FGeometryCollectionPhysicsProxy::NeedToInitializeSharedCollisionStructures ( const FGeometryCollection RestCollection)
static

◆ NewData()

Chaos::FParticleData * FGeometryCollectionPhysicsProxy::NewData ( )
inline

Pushes current game thread particle state into the GameToPhysInterchange.

Redirects to BufferGameState(), and returns nullptr as this class manages data transport to the physics thread itself, without allocating memory.

◆ OnRemoveFromScene()

void FGeometryCollectionPhysicsProxy::OnRemoveFromScene ( )

◆ OnRemoveFromSolver()

void FGeometryCollectionPhysicsProxy::OnRemoveFromSolver ( Chaos::FPBDRigidsSolver RBDSolver)

◆ OnUnregisteredFromSolver()

void FGeometryCollectionPhysicsProxy::OnUnregisteredFromSolver ( )

◆ PrepareBufferData()

void FGeometryCollectionPhysicsProxy::PrepareBufferData ( Chaos::FDirtyGeometryCollectionData BufferData,
const FGeometryDynamicCollection ThreadCollection,
Chaos::FReal  SolverLastDt = 0.0 
)
protected

CONTEXT: GAMETHREAD or PHYSICS THREAD this method needs to be careful of data access , ultimately only the this pointer can be passed to the BufferData

◆ PullFromPhysicsState()

bool FGeometryCollectionPhysicsProxy::PullFromPhysicsState ( const Chaos::FDirtyGeometryCollectionData BufferData,
const int32  SolverSyncTimestamp,
const Chaos::FDirtyGeometryCollectionData NextPullData = nullptr,
const Chaos::FRealSingle Alpha = nullptr,
const Chaos::FDirtyRigidParticleReplicationErrorData Error = nullptr,
const Chaos::FReal  AsyncFixedTimeStep = 0 
)

Pulls data out of the PhysToGameInterchange and updates GTDynamicCollection. Called from FPhysScene_ChaosInterface::SyncBodies(), NOT the solver.

CONTEXT: GAMETHREAD (Read Locked) Perform a similar operation to Sync, but take the data from a gamethread-safe buffer. This will be called from the game thread when it cannot sync to the physics thread. The simulation is very likely to be running when this happens so never read any physics thread data here!

Note: A read lock will have been acquired for this - so the physics thread won't force a buffer flip while this sync is ongoing

◆ PushStateOnGameThread()

void FGeometryCollectionPhysicsProxy::PushStateOnGameThread ( Chaos::FPBDRigidsSolver InSolver)

Push data from the game thread to the physics thread

◆ PushToPhysicsState()

void FGeometryCollectionPhysicsProxy::PushToPhysicsState ( )

apply the state changes on the physics thread

◆ RebaseAllGameThreadCollectionTransformsOnNewWorldTransform_External()

void FGeometryCollectionPhysicsProxy::RebaseAllGameThreadCollectionTransformsOnNewWorldTransform_External ( )

◆ RebaseParticleGameThreadCollectionTransformOnNewWorldTransform_External()

bool FGeometryCollectionPhysicsProxy::RebaseParticleGameThreadCollectionTransformOnNewWorldTransform_External ( int32  ParticleIndex,
const TManagedArray< FTransform > &  MassToLocal,
bool  bIsComponentTransformScaled,
const FTransform ComponentScaleTransform 
)
protected

◆ RemoveAllAnchors_External()

void FGeometryCollectionPhysicsProxy::RemoveAllAnchors_External ( )

◆ Reset()

void FGeometryCollectionPhysicsProxy::Reset ( )
inline

◆ ScaleClusterGeometry_Internal()

void FGeometryCollectionPhysicsProxy::ScaleClusterGeometry_Internal ( const FVector WorldScale)
protected

Scale the cluster particles geometry (creates if necessary an additional TImplicitObjectScaled object into the implicits hierarchy)

◆ SetAnchoredByIndex_External()

void FGeometryCollectionPhysicsProxy::SetAnchoredByIndex_External ( int32  Index,
bool  bAnchored 
)

◆ SetAnchoredByTransformedBox_External()

void FGeometryCollectionPhysicsProxy::SetAnchoredByTransformedBox_External ( const FBox Box,
const FTransform Transform,
bool  bAnchored,
int32  MaxLevel = INDEX_NONE 
)

◆ SetClusteredParticleKinematicTarget_Internal()

void FGeometryCollectionPhysicsProxy::SetClusteredParticleKinematicTarget_Internal ( Chaos::FPBDRigidClusteredParticleHandle Handle,
const FTransform WorldTransform 
)
protected

◆ SetCollisionParticlesPerObjectFraction()

void FGeometryCollectionPhysicsProxy::SetCollisionParticlesPerObjectFraction ( float  CollisionParticlesPerObjectFractionIn)
inline

◆ SetCreateTraceCollisionGeometryCallback()

void FGeometryCollectionPhysicsProxy::SetCreateTraceCollisionGeometryCallback ( FCreateTraceCollisionGeometryCallback  InCreateGeometryCallback)
inline

◆ SetDamageModel_External()

void FGeometryCollectionPhysicsProxy::SetDamageModel_External ( EDamageModelTypeEnum  DamageModel)

◆ SetDamageModel_Internal()

void FGeometryCollectionPhysicsProxy::SetDamageModel_Internal ( EDamageModelTypeEnum  DamageModel)
protected

◆ SetDamagePropagationData_External()

void FGeometryCollectionPhysicsProxy::SetDamagePropagationData_External ( bool  bEnabled,
float  BreakDamagePropagationFactor,
float  ShockDamagePropagationFactor 
)

◆ SetDamagePropagationData_Internal()

void FGeometryCollectionPhysicsProxy::SetDamagePropagationData_Internal ( bool  bEnabled,
float  BreakDamagePropagationFactor,
float  ShockDamagePropagationFactor 
)
protected

◆ SetDamageThresholds_External()

void FGeometryCollectionPhysicsProxy::SetDamageThresholds_External ( const TArray< float > &  DamageThresholds)

◆ SetDamageThresholds_Internal()

void FGeometryCollectionPhysicsProxy::SetDamageThresholds_Internal ( const TArray< float > &  DamageThresholds)
protected

◆ SetEnableDamageFromCollision_External()

void FGeometryCollectionPhysicsProxy::SetEnableDamageFromCollision_External ( bool  bEnable)

◆ SetEnableGravity_External()

void FGeometryCollectionPhysicsProxy::SetEnableGravity_External ( bool  EnableGravity_External)

◆ SetEnableGravity_Internal()

void FGeometryCollectionPhysicsProxy::SetEnableGravity_Internal ( bool  bEnabled)
protected

◆ SetFilterData_Internal()

void FGeometryCollectionPhysicsProxy::SetFilterData_Internal ( const Chaos::Filter::FCombinedShapeFilterData NewShapeFilter)
protected

◆ SetGravityGroupIndex_External()

void FGeometryCollectionPhysicsProxy::SetGravityGroupIndex_External ( int32  GravityGroupIndex)

◆ SetGravityGroupIndex_Internal()

void FGeometryCollectionPhysicsProxy::SetGravityGroupIndex_Internal ( int32  GravityGroupIndex)
protected

◆ SetMaterialOverrideMassScaleMultiplier_External()

void FGeometryCollectionPhysicsProxy::SetMaterialOverrideMassScaleMultiplier_External ( float  InMultiplier)

◆ SetMaterialOverrideMassScaleMultiplier_Internal()

void FGeometryCollectionPhysicsProxy::SetMaterialOverrideMassScaleMultiplier_Internal ( float  InMultiplier)
protected

◆ SetNotifyBreakings_External()

void FGeometryCollectionPhysicsProxy::SetNotifyBreakings_External ( bool  bNotify)

◆ SetNotifyCrumblings_External()

void FGeometryCollectionPhysicsProxy::SetNotifyCrumblings_External ( bool  bNotify,
bool  bIncludeChildren 
)

◆ SetNotifyGlobalBreakings_External()

void FGeometryCollectionPhysicsProxy::SetNotifyGlobalBreakings_External ( bool  bNotify)

◆ SetNotifyGlobalCrumblings_External()

void FGeometryCollectionPhysicsProxy::SetNotifyGlobalCrumblings_External ( bool  bNotify,
bool  bIncludeChildren 
)

◆ SetNotifyGlobalRemovals_External()

void FGeometryCollectionPhysicsProxy::SetNotifyGlobalRemovals_External ( bool  bNotify)

◆ SetNotifyRemovals_External()

void FGeometryCollectionPhysicsProxy::SetNotifyRemovals_External ( bool  bNotify)

◆ SetOneWayInteractionLevel_External()

void FGeometryCollectionPhysicsProxy::SetOneWayInteractionLevel_External ( int32  OneWayInteractionLevel)

◆ SetOneWayInteractionLevel_Internal()

void FGeometryCollectionPhysicsProxy::SetOneWayInteractionLevel_Internal ( int32  InOneWayInteractionLevel)
protected

◆ SetPerParticleFilterData_Internal()

void FGeometryCollectionPhysicsProxy::SetPerParticleFilterData_Internal ( const TArray< FParticleCollisionFilterData > &  PerParticleData)
protected

◆ SetPhysicsMaterial_External()

void FGeometryCollectionPhysicsProxy::SetPhysicsMaterial_External ( const Chaos::FMaterialHandle MaterialHandle)

◆ SetPhysicsMaterial_Internal()

void FGeometryCollectionPhysicsProxy::SetPhysicsMaterial_Internal ( const Chaos::FMaterialHandle MaterialHandle)
protected

◆ SetPostParticlesCreatedCallback()

void FGeometryCollectionPhysicsProxy::SetPostParticlesCreatedCallback ( TFunction< void()>  Callback)
inline

◆ SetPostPhysicsSyncCallback()

void FGeometryCollectionPhysicsProxy::SetPostPhysicsSyncCallback ( TFunction< void()>  Callback)
inline

◆ SetProxyDirty_External()

void FGeometryCollectionPhysicsProxy::SetProxyDirty_External ( )

◆ SetReplicationMode()

void FGeometryCollectionPhysicsProxy::SetReplicationMode ( EReplicationMode  Mode)
inline

◆ SetSkipChildToParentUpdateWhenInClusterUnion()

void FGeometryCollectionPhysicsProxy::SetSkipChildToParentUpdateWhenInClusterUnion ( bool  bValue)
inline

◆ SetSleepingState()

void FGeometryCollectionPhysicsProxy::SetSleepingState ( const Chaos::FPBDRigidsSolver RigidsSolver)
protected

◆ SetUseMaterialDamageModifiers_External()

void FGeometryCollectionPhysicsProxy::SetUseMaterialDamageModifiers_External ( bool  bUseMaterialDamageModifiers)

◆ SetUseMaterialDamageModifiers_Internal()

void FGeometryCollectionPhysicsProxy::SetUseMaterialDamageModifiers_Internal ( bool  bUseMaterialDamageModifiers)
protected

◆ SetUseStaticMeshCollisionForTraces_External()

void FGeometryCollectionPhysicsProxy::SetUseStaticMeshCollisionForTraces_External ( bool  bInUseStaticMeshCollisionForTraces)

◆ SetWorldTransform_External()

void FGeometryCollectionPhysicsProxy::SetWorldTransform_External ( const FTransform WorldTransform)

◆ SetWorldTransform_Internal()

void FGeometryCollectionPhysicsProxy::SetWorldTransform_Internal ( const FTransform WorldTransform,
bool  bInSkipChildToParentUpdateWhenInClusterUnion = false 
)
protected

◆ StartFrameCallback()

void FGeometryCollectionPhysicsProxy::StartFrameCallback ( const float  InDt,
const float  InTime 
)
inline

◆ SyncBeforeDestroy()

void FGeometryCollectionPhysicsProxy::SyncBeforeDestroy ( )

◆ UE_DEPRECATED() [1/2]

FGeometryCollectionPhysicsProxy::UE_DEPRECATED ( 5.  7,
"Use the overload that takes a FCombinedShapeFilterData instead"   
) const &
protected

◆ UE_DEPRECATED() [2/2]

FGeometryCollectionPhysicsProxy::UE_DEPRECATED ( 5.  7,
"Use the overload that takes a FCombinedShapeFilterData instead"   
) const &

◆ UpdateDamageThreshold_Internal()

void FGeometryCollectionPhysicsProxy::UpdateDamageThreshold_Internal ( )
protected

◆ UpdateFilterData_External()

void FGeometryCollectionPhysicsProxy::UpdateFilterData_External ( const Chaos::Filter::FCombinedShapeFilterData NewShapeFilter)

◆ UpdateKinematicBodiesCallback()

void FGeometryCollectionPhysicsProxy::UpdateKinematicBodiesCallback ( const FParticlesType InParticles,
const float  InDt,
const float  InTime,
FKinematicProxy InKinematicProxy 
)
inline

◆ UpdatePerParticleFilterData_External()

void FGeometryCollectionPhysicsProxy::UpdatePerParticleFilterData_External ( const TArray< FParticleCollisionFilterData > &  Data)

Member Data Documentation

◆ NewQueryFilter

const FCollisionFilterData & FGeometryCollectionPhysicsProxy::NewQueryFilter

The documentation for this class was generated from the following files: