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

#include <PBDRigidsEvolutionGBF.h>

+ Inheritance diagram for Chaos::FPBDRigidsEvolutionGBF:

Public Types

using Base = FPBDRigidsEvolutionBase
 
using FGravityForces = FPerParticleGravity
 
using FCollisionConstraints = FPBDCollisionConstraints
 
using FCollisionDetector = FSpatialAccelerationCollisionDetector
 
using FExternalForces = FPerParticleExternalForces
 
using FJointConstraints = FPBDJointCombinedConstraints
 
- Public Types inherited from Chaos::FPBDRigidsEvolutionBase
using FAccelerationStructure = ISpatialAccelerationCollection< FAccelerationStructureHandle, FReal, 3 >
 
typedef TFunction< void(TTransientPBDRigidParticleHandle< FReal, 3 > &Particle, const FReal)> FForceRule
 
typedef TFunction< void(const TArray< FGeometryParticleHandle * > &, const FReal)> FUpdateVelocityRule
 
typedef TFunction< void(const TParticleView< FPBDRigidParticles > &, const FReal)> FUpdatePositionRule
 
typedef TFunction< void(FPBDRigidParticles &, const FReal, const FReal, const int32)> FKinematicUpdateRule
 
typedef TFunction< void(TParticleView< FPBDRigidParticles > &)> FCaptureRewindRule
 
typedef TFunction< void(TParticleView< FPBDRigidParticles > &)> FCaptureRewindKinematicTargetRule
 

Public Member Functions

CHAOS_API FPBDRigidsEvolutionGBF (FPBDRigidsSOAs &InParticles, THandleArray< FChaosPhysicsMaterial > &SolverPhysicsMaterials, const TArray< ISimCallbackObject * > *InMidPhaseModifiers=nullptr, const TArray< ISimCallbackObject * > *InCCDModifiers=nullptr, const TArray< ISimCallbackObject * > *InStrainModifiers=nullptr, const TArray< ISimCallbackObject * > *InCollisionModifiers=nullptr, bool InIsSingleThreaded=false)
 
CHAOS_API ~FPBDRigidsEvolutionGBF ()
 
virtual void SetName (const FString &InName)
 
void SetPreIntegrateCallback (const FPBDRigidsEvolutionCallback &Cb)
 
void SetPostIntegrateCallback (const FPBDRigidsEvolutionCallback &Cb)
 
void SetPreSolveCallback (const FPBDRigidsEvolutionCallback &Cb)
 
void SetPostSolveCallback (const FPBDRigidsEvolutionCallback &Cb)
 
void SetPostDetectCollisionsCallback (const FPBDRigidsEvolutionCallback &Cb)
 
void SetPreApplyCallback (const FPBDRigidsEvolutionCallback &Cb)
 
FORCEINLINE void SetInternalParticleInitilizationFunction (const FPBDRigidsEvolutionInternalHandleCallback &Cb)
 
FORCEINLINE void DoInternalParticleInitilization (const FGeometryParticleHandle *OldParticle, FGeometryParticleHandle *NewParticle)
 
void SetIsDeterministic (const bool bInIsDeterministic)
 
void SetShockPropagationIterations (const int32 InPositionIts, const int32 InVelocityIts)
 
CHAOS_API void Advance (const FReal Dt, const FReal MaxStepDt, const int32 MaxSteps)
 
CHAOS_API void AdvanceOneTimeStep (const FReal dt, const FSubStepInfo &SubStepInfo=FSubStepInfo())
 
FORCEINLINE FCollisionConstraintsGetCollisionConstraints ()
 
FORCEINLINE const FCollisionConstraintsGetCollisionConstraints () const
 
FORCEINLINE FCollisionDetectorGetCollisionDetector ()
 
FORCEINLINE const FCollisionDetectorGetCollisionDetector () const
 
FORCEINLINE FGravityForcesGetGravityForces ()
 
FORCEINLINE const FGravityForcesGetGravityForces () const
 
FORCEINLINE const FRigidClusteringGetRigidClustering () const
 
FORCEINLINE FRigidClusteringGetRigidClustering ()
 
FORCEINLINE FPBDJointConstraintsGetJointConstraints ()
 
FORCEINLINE const FPBDJointConstraintsGetJointConstraints () const
 
FORCEINLINE FJointConstraintsGetJointCombinedConstraints ()
 
FORCEINLINE const FJointConstraintsGetJointCombinedConstraints () const
 
FORCEINLINE FPBDSuspensionConstraintsGetSuspensionConstraints ()
 
FORCEINLINE const FPBDSuspensionConstraintsGetSuspensionConstraints () const
 
FORCEINLINE FCharacterGroundConstraintContainerGetCharacterGroundConstraints ()
 
FORCEINLINE const FCharacterGroundConstraintContainerGetCharacterGroundConstraints () const
 
CHAOS_API void SetParticleTransform (FGeometryParticleHandle *InParticle, const FVec3 &InPos, const FRotation3 &InRot, const bool bIsTeleport, const bool bWakeUp=true)
 
virtual CHAOS_API void SetParticleTransformSwept (FGeometryParticleHandle *InParticle, const FVec3 &InPos, const FRotation3 &InRot, const bool bIsTeleport)
 
CHAOS_API void SetParticleKinematicTarget (FGeometryParticleHandle *ParticleHandle, const FKinematicTarget &NewKinematicTarget)
 
CHAOS_API void ApplyParticleTransformCorrectionDelta (FGeometryParticleHandle *InParticle, const FVec3 &InPosDelta, const FVec3 &InRotDelta, const bool bApplyToConnectedBodies, const bool bInRecalculateFrictionOnConnectedBodies=true, const TArray< FParticleID > &ExcludeConnections=TArray< FParticleID >())
 
CHAOS_API void ApplyParticleTransformCorrection (FGeometryParticleHandle *InParticle, const FVec3 &InPos, const FRotation3 &InRot, const bool bApplyToConnectedBodies, const bool bInRecalculateFrictionOnConnectedBodies=true, const TArray< FParticleID > &ExcludeConnections=TArray< FParticleID >())
 
CHAOS_API void ApplySleepOnConnectedParticles (FGeometryParticleHandle *InParticle)
 
CHAOS_API void OnParticleMoved (FGeometryParticleHandle *InParticle, const FVec3 &PrevX, const FRotation3 &PrevR, const bool bIsTeleport, const bool bWakeUp=true)
 
CHAOS_API void SetParticleVelocities (FGeometryParticleHandle *InParticle, const FVec3 &InV, const FVec3f &InW)
 
CHAOS_API void SetParticleDynamics (FPBDRigidParticleHandle *Rigid, const FParticleDynamics &Dynamics)
 
CHAOS_API void SetParticleMassProps (FPBDRigidParticleHandle *Rigid, const FParticleMassProps &MassProperties)
 
void ReloadParticlesCache ()
 
void DestroyParticleCollisionsInAllocator (FGeometryParticleHandle *Particle)
 
virtual void DestroyTransientConstraints (FGeometryParticleHandle *Particle) override final
 
virtual void DestroyTransientConstraints () override final
 
virtual void ResetCollisions () override
 
void EndFrame (FReal Dt)
 
void ParticleMaterialChanged (FGeometryParticleHandle *Particle)
 
CHAOS_API const FChaosPhysicsMaterialGetFirstClusteredPhysicsMaterial (const FGeometryParticleHandle *Particle) const
 
CHAOS_API void Integrate (FReal Dt)
 
virtual CHAOS_API void ApplyKinematicTargets (const FReal Dt, const FReal StepFraction) override final
 
CHAOS_API void Serialize (FChaosArchive &Ar)
 
CHAOS_API TUniquePtr< IResimCacheBaseCreateExternalResimCache () const
 
CHAOS_API void SetCurrentStepResimCache (IResimCacheBase *InCurrentStepResimCache)
 
FSpatialAccelerationBroadPhaseGetBroadPhase ()
 
CHAOS_API FPBDJointConstraintHandleCreateJointConstraint (const FParticlePair &InParticlePair, const FPBDJointSettings &InJointSettings)
 
CHAOS_API void DestroyJointConstraint (FPBDJointConstraintHandle *InJointHandle)
 
CHAOS_API FPBDJointConstraintHandleSetJointConstraintSettings (FPBDJointConstraintHandle *InJointHandle, const FPBDJointSettings &InJointSettings)
 
CHAOS_API void TransferJointConstraintCollisions ()
 
template<bool bPersistent>
void ResetVSmoothFromForces (TPBDRigidParticleHandleImp< FReal, 3, bPersistent > &Particle)
 
template<typename TParticleView >
void Integrate (const TParticleView &InParticles, FReal Dt)
 
virtual UE_INTERNAL void WaitIntegrationComplete () override
 
- Public Member Functions inherited from Chaos::FPBDRigidsEvolutionBase
CHAOS_API FPBDRigidsEvolutionBase (FPBDRigidsSOAs &InParticles, THandleArray< FChaosPhysicsMaterial > &InSolverPhysicsMaterials, bool InIsSingleThreaded=false)
 
virtual CHAOS_API ~FPBDRigidsEvolutionBase ()
 
TArray< FGeometryParticleHandle * > CreateStaticParticles (int32 NumParticles, const FUniqueIdx *ExistingIndices=nullptr, const FGeometryParticleParameters &Params=FGeometryParticleParameters())
 
TArray< FKinematicGeometryParticleHandle * > CreateKinematicParticles (int32 NumParticles, const FUniqueIdx *ExistingIndices=nullptr, const FKinematicGeometryParticleParameters &Params=FKinematicGeometryParticleParameters())
 
TArray< FPBDRigidParticleHandle * > CreateDynamicParticles (int32 NumParticles, const FUniqueIdx *ExistingIndices=nullptr, const FPBDRigidParticleParameters &Params=FPBDRigidParticleParameters())
 
TArray< TPBDRigidClusteredParticleHandle< FReal, 3 > * > CreateClusteredParticles (int32 NumParticles, const FUniqueIdx *ExistingIndices=nullptr, const FPBDRigidParticleParameters &Params=FPBDRigidParticleParameters())
 
TArray< TPBDGeometryCollectionParticleHandle< FReal, 3 > * > CreateGeometryCollectionParticles (int32 NumParticles, const FUniqueIdx *ExistingIndices=nullptr, const FPBDRigidParticleParameters &Params=FPBDRigidParticleParameters())
 
void AddForceFunction (FForceRule ForceFunction)
 
void AddImpulseFunction (FForceRule ImpulseFunction)
 
void SetParticleUpdatePositionFunction (FUpdatePositionRule ParticleUpdate)
 
void SetCaptureRewindDataFunction (FCaptureRewindRule Rule)
 
void SetCaptureRewindKinematicTargetFunction (FCaptureRewindKinematicTargetRule Rule)
 
TGeometryParticleHandles< FReal, 3 > & GetParticleHandles ()
 
const TGeometryParticleHandles< FReal, 3 > & GetParticleHandles () const
 
FPBDRigidsSOAsGetParticles ()
 
const FPBDRigidsSOAsGetParticles () const
 
void AddConstraintContainer (FPBDConstraintContainer &InContainer, const int32 Priority=0)
 
void SetNumPositionIterations (int32 InNumIterations)
 
int32 GetNumPositionIterations () const
 
void SetNumVelocityIterations (int32 InNumIterations)
 
int32 GetNumVelocityIterations () const
 
void SetNumProjectionIterations (int32 InNumIterations)
 
int32 GetNumProjectionIterations () const
 
void RegisterParticle (FGeometryParticleHandle *Particle)
 
void EnableParticle (FGeometryParticleHandle *Particle)
 
void DisableParticle (FGeometryParticleHandle *Particle)
 
void InvalidateParticle (FGeometryParticleHandle *Particle)
 
CHAOS_API void FlushExternalAccelerationQueue (FAccelerationStructure &Acceleration, FPendingSpatialDataQueue &ExternalQueue)
 
void DisableParticles (TSet< FGeometryParticleHandle * > &ParticlesIn)
 
template<bool bPersistent>
FORCEINLINE_DEBUGGABLE bool IsADisableCluster (TGeometryParticleHandleImp< FReal, 3, bPersistent > &Particle)
 
template<bool bPersistent>
FORCEINLINE_DEBUGGABLE void DirtyParticle (TGeometryParticleHandleImp< FReal, 3, bPersistent > &Particle, const EPendingSpatialDataOperation Op=EPendingSpatialDataOperation::Update)
 
template<bool bPersistent>
FORCEINLINE_DEBUGGABLE void DirtyParticleAsync (TGeometryParticleHandleImp< FReal, 3, bPersistent > &Particle, const EPendingSpatialDataOperation Op=EPendingSpatialDataOperation::Update)
 
void DestroyParticle (FGeometryParticleHandle *Particle)
 
void ReserveParticles (const int32 Num)
 
CHAOS_API void SetParticleObjectState (FPBDRigidParticleHandle *Particle, EObjectStateType ObjectState)
 
CHAOS_API void WakeParticle (FPBDRigidParticleHandle *Particle)
 
CHAOS_API void SetParticleSleepType (FPBDRigidParticleHandle *Particle, ESleepType InSleepType)
 
CHAOS_API void DisableParticles (const TSet< FGeometryParticleHandle * > &InParticles)
 
void RemoveConstraintFromConstraintGraph (FConstraintHandle *ConstraintHandle)
 
void RemoveConstraintsFromConstraintGraph (const FConstraintHandleArray &Constraints)
 
void DisconnectConstraints (const TSet< FGeometryParticleHandle * > &RemovedParticles)
 
void DisableConstraints (FGeometryParticleHandle *ParticleHandle)
 
void EnableConstraints (FGeometryParticleHandle *ParticleHandle)
 
void ResetConstraints ()
 
const TParticleView< FPBDRigidClusteredParticles > & GetNonDisabledClusteredView () const
 
TSerializablePtr< FChaosPhysicsMaterialGetPhysicsMaterial (const FGeometryParticleHandle *Particle) const
 
CHAOS_API const FChaosPhysicsMaterialGetFirstPhysicsMaterial (const FGeometryParticleHandle *Particle) const
 
const TUniquePtr< FChaosPhysicsMaterial > & GetPerParticlePhysicsMaterial (const FGeometryParticleHandle *Particle) const
 
void SetPerParticlePhysicsMaterial (FGeometryParticleHandle *Particle, TUniquePtr< FChaosPhysicsMaterial > &InMaterial)
 
void SetPhysicsMaterial (FGeometryParticleHandle *Particle, TSerializablePtr< FChaosPhysicsMaterial > InMaterial)
 
void PrepareTick ()
 
void UnprepareTick ()
 
CHAOS_API void UpdateExternalAccelerationStructure_External (ISpatialAccelerationCollection< FAccelerationStructureHandle, FReal, 3 > *&ExternalStructure, FPendingSpatialDataQueue &PendingExternal)
 
ISpatialAccelerationCollection< FAccelerationStructureHandle, FReal, 3 > * GetSpatialAcceleration ()
 
CHAOS_API void FlushSpatialAcceleration ()
 
CHAOS_API void RebuildSpatialAccelerationForPerfTest ()
 
CHAOS_API void ComputeIntermediateSpatialAcceleration (bool bBlock=false)
 
const Private::FPBDIslandManagerGetConstraintGraph () const
 
Private::FPBDIslandManagerGetConstraintGraph ()
 
Private::FPBDIslandManagerGetIslandManager ()
 
const Private::FPBDIslandManagerGetIslandManager () const
 
const Private::FPBDIslandGroupManagerGetIslandGroupManager () const
 
void SetResim (bool bInResim)
 
const bool IsResimming () const
 
void SetReset (bool bInReset)
 
const bool IsResetting () const
 
void Serialize (FChaosArchive &Ar)
 
FUniqueIdx GenerateUniqueIdx ()
 
void ReleaseUniqueIdx (FUniqueIdx UniqueIdx)
 
bool IsUniqueIndexPendingRelease (FUniqueIdx UniqueIdx) const
 
void KillSafeAsyncTasks ()
 
bool AreAnyTasksPending () const
 
void SetCanStartAsyncTasks (bool bInCanStartAsyncTasks)
 
void SetRewindData (FRewindData *RewindData)
 
FRewindDataGetRewindData ()
 
CHAOS_API void DisableParticleWithRemovalEvent (FGeometryParticleHandle *Particle)
 
const TArray< FRemovalData > & GetAllRemovals ()
 
void ResetAllRemovals ()
 
const FString & GetName () const
 
template<bool bPersistent>
FORCEINLINE_DEBUGGABLE void RemoveParticleFromAccelerationStructure (TGeometryParticleHandleImp< FReal, 3, bPersistent > &ParticleHandle)
 

Static Public Attributes

static constexpr int32 DefaultNumPositionIterations = 8
 
static constexpr int32 DefaultNumVelocityIterations = 2
 
static constexpr int32 DefaultNumProjectionIterations = 1
 
static constexpr FRealSingle DefaultCollisionMarginFraction = 0.05f
 
static constexpr FRealSingle DefaultCollisionMarginMax = 10.0f
 
static constexpr FRealSingle DefaultCollisionCullDistance = 3.0f
 
static constexpr FRealSingle DefaultCollisionMaxPushOutVelocity = 1000.0f
 
static constexpr FRealSingle DefaultCollisionDepenetrationVelocity = -1.0f
 
static constexpr int32 DefaultRestitutionThreshold = 1000
 

Protected Member Functions

CHAOS_API void AdvanceOneTimeStepImpl (const FReal Dt, const FSubStepInfo &SubStepInfo)
 
void ApplyMidPhaseModifier (FReal Dt)
 
void ApplyParticleTransformCorrectionImpl (FGeometryParticleHandle *InParticle, const FRigidTransform3 &InTransform, const bool bInRecalculateFriction=true)
 
TArray< FGeometryParticleHandle * > GetConnectedParticles (FGeometryParticleHandle *InParticle, const TArray< FParticleID > &ExcludeConnections=TArray< FParticleID >())
 
void UpdateInertiaConditioning ()
 
FEvolutionResimCacheGetCurrentStepResimCache ()
 
void UpdateCollisionSolverType ()
 
template<typename LambdaType >
void DispatchKinematicTargetsTasks (int32 DispatchBatchIndex, int32 NumParticles, FReal Dt, FReal StepFraction, bool IsLastStep, LambdaType ReturnHandle)
 
- Protected Member Functions inherited from Chaos::FPBDRigidsEvolutionBase
int32 NumConstraints () const
 
void UpdateConstraintPositionBasedState (FReal Dt)
 
void CreateConstraintGraph ()
 
void CreateIslands ()
 
void PruneInternalPendingData (FAccelerationStructure &AccelerationStructure)
 
void FlushInternalAccelerationQueue ()
 
void FlushAsyncAccelerationQueue ()
 
void WaitOnAccelerationStructure ()
 
FORCEINLINE_DEBUGGABLE void ApplyParticlePendingData (const FPendingSpatialData &PendingData, FAccelerationStructure &SpatialAcceleration, bool bUpdateCache, bool bUpdateDynamicTrees)
 
FAccelerationStructureGetFreeSpatialAcceleration_Internal ()
 
void FreeSpatialAcceleration_External (FAccelerationStructure *Structure)
 
void ReleaseIdx (FUniqueIdx Idx)
 
void ReleasePendingIndices ()
 
CHAOS_API void TestModeStep ()
 
CHAOS_API void TestModeParticleDisabled (FGeometryParticleHandle *Particle)
 
CHAOS_API void TestModeSaveParticles ()
 
CHAOS_API void TestModeSaveParticle (FGeometryParticleHandle *Particle)
 
CHAOS_API void TestModeUpdateSavedParticle (FGeometryParticleHandle *Particle)
 
CHAOS_API void TestModeRestoreParticles ()
 
CHAOS_API void TestModeRestoreParticle (FGeometryParticleHandle *Particle)
 

Protected Attributes

FRigidClustering Clustering
 
FPBDJointCombinedConstraints JointConstraints
 
FPBDSuspensionConstraints SuspensionConstraints
 
FCharacterGroundConstraintContainer CharacterGroundConstraints
 
FGravityForces GravityForces
 
FCollisionConstraints CollisionConstraints
 
FSpatialAccelerationBroadPhase BroadPhase
 
FSpatialAccelerationCollisionDetector CollisionDetector
 
FPBDRigidsEvolutionCallback PreIntegrateCallback
 
FPBDRigidsEvolutionCallback PostIntegrateCallback
 
FPBDRigidsEvolutionCallback PostDetectCollisionsCallback
 
FPBDRigidsEvolutionCallback PreSolveCallback
 
FPBDRigidsEvolutionCallback PostSolveCallback
 
FPBDRigidsEvolutionInternalHandleCallback InternalParticleInitilization
 
FEvolutionResimCacheCurrentStepResimCacheImp
 
const TArray< ISimCallbackObject * > * MidPhaseModifiers
 
const TArray< ISimCallbackObject * > * CCDModifiers
 
const TArray< ISimCallbackObject * > * CollisionModifiers
 
FCCDManager CCDManager
 
bool bIsDeterministic
 
int32 InertiaConditioningEpoch
 
- Protected Attributes inherited from Chaos::FPBDRigidsEvolutionBase
TArray< FForceRuleForceRules
 
TArray< FForceRuleImpulseRules
 
FUpdatePositionRule ParticleUpdatePosition
 
FKinematicUpdateRule KinematicUpdate
 
FCaptureRewindRule CaptureRewindData
 
FCaptureRewindKinematicTargetRule CaptureRewindKinematicTarget
 
TArray< FPBDConstraintContainer * > ConstraintContainers
 
Private::FPBDIslandManager IslandManager
 
Private::FPBDIslandGroupManager IslandGroupManager
 
TArrayCollectionArray< TSerializablePtr< FChaosPhysicsMaterial > > PhysicsMaterials
 
TArrayCollectionArray< TUniquePtr< FChaosPhysicsMaterial > > PerParticlePhysicsMaterials
 
TArrayCollectionArray< boolCollided
 
FPBDRigidsSOAsParticles
 
THandleArray< FChaosPhysicsMaterial > & SolverPhysicsMaterials
 
FAccelerationStructureInternalAcceleration
 
FAccelerationStructureAsyncInternalAcceleration
 
FAccelerationStructureAsyncExternalAcceleration
 
FRewindDataMRewindData = nullptr
 
TSpscQueue< FAccelerationStructure * > ExternalStructuresQueue
 
TSpscQueue< FAccelerationStructure * > ExternalStructuresPool
 
TArray< TUniquePtr< FAccelerationStructure > > AccelerationBackingBuffer
 
bool bIsSingleThreaded
 
bool bCanStartAsyncTasks
 
TArray< FUniqueIdxUniqueIndicesPendingRelease
 
TArray< FRemovalDataMAllRemovals
 
FPendingSpatialInternalDataQueue InternalAccelerationQueue
 
FPendingSpatialDataQueue AsyncAccelerationQueue
 
Private::FTaskDispatcherEvolution TaskDispatcher
 
TArrayAsMap< FUniqueIdx, uint32ParticleToCacheInnerIdx
 
TMap< FSpatialAccelerationIdx, TUniquePtr< FSpatialAccelerationCache > > SpatialAccelerationCache
 
FGraphEventRef AccelerationStructureTaskComplete
 
std::atomic< bool > * bAccelerationStructureTaskStarted
 
std::atomic< bool > * bAccelerationStructureTaskSignalKill
 
TUniquePtr< ISpatialAccelerationCollectionFactorySpatialCollectionFactory
 
TArray< FUniqueIdxPendingReleaseIndices
 
bool bIsResim = false
 
bool bIsReset = false
 
FSharedDebugName EvolutionName
 
TMap< FPBDRigidParticleHandle *, FTestModeParticleDataTestModeData
 

Additional Inherited Members

- Public Attributes inherited from Chaos::FPBDRigidsEvolutionBase
int32 LatestExternalTimestampConsumed_Internal
 
- Static Protected Member Functions inherited from Chaos::FPBDRigidsEvolutionBase
static void CopyUnBuiltDynamicAccelerationStructures (const TMap< FSpatialAccelerationIdx, TUniquePtr< FSpatialAccelerationCache > > &SpatialAccelerationCache, FAccelerationStructure *InternalAcceleration, FAccelerationStructure *AsyncInternalAcceleration, FAccelerationStructure *AsyncExternalAcceleration)
 
static void CopyPristineAccelerationStructures (const TMap< FSpatialAccelerationIdx, TUniquePtr< FSpatialAccelerationCache > > &SpatialAccelerationCache, FAccelerationStructure *FromStructure, FAccelerationStructure *ToStructure, bool CheckPristine)
 

Member Typedef Documentation

◆ Base

◆ FCollisionConstraints

◆ FCollisionDetector

◆ FExternalForces

◆ FGravityForces

◆ FJointConstraints

Constructor & Destructor Documentation

◆ FPBDRigidsEvolutionGBF()

Chaos::FPBDRigidsEvolutionGBF::FPBDRigidsEvolutionGBF ( FPBDRigidsSOAs InParticles,
THandleArray< FChaosPhysicsMaterial > &  SolverPhysicsMaterials,
const TArray< ISimCallbackObject * > *  InMidPhaseModifiers = nullptr,
const TArray< ISimCallbackObject * > *  InCCDModifiers = nullptr,
const TArray< ISimCallbackObject * > *  InStrainModifiers = nullptr,
const TArray< ISimCallbackObject * > *  InCollisionModifiers = nullptr,
bool  InIsSingleThreaded = false 
)

◆ ~FPBDRigidsEvolutionGBF()

Chaos::FPBDRigidsEvolutionGBF::~FPBDRigidsEvolutionGBF ( )

Member Function Documentation

◆ Advance()

void Chaos::FPBDRigidsEvolutionGBF::Advance ( const FReal  Dt,
const FReal  MaxStepDt,
const int32  MaxSteps 
)

◆ AdvanceOneTimeStep()

void Chaos::FPBDRigidsEvolutionGBF::AdvanceOneTimeStep ( const FReal  dt,
const FSubStepInfo SubStepInfo = FSubStepInfo() 
)

◆ AdvanceOneTimeStepImpl()

void Chaos::FPBDRigidsEvolutionGBF::AdvanceOneTimeStepImpl ( const FReal  Dt,
const FSubStepInfo SubStepInfo 
)
protected

◆ ApplyKinematicTargets()

void Chaos::FPBDRigidsEvolutionGBF::ApplyKinematicTargets ( const FReal  Dt,
const FReal  StepFraction 
)
finaloverridevirtual

Reimplemented from Chaos::FPBDRigidsEvolutionBase.

◆ ApplyMidPhaseModifier()

void Chaos::FPBDRigidsEvolutionGBF::ApplyMidPhaseModifier ( FReal  Dt)
protected

◆ ApplyParticleTransformCorrection()

void Chaos::FPBDRigidsEvolutionGBF::ApplyParticleTransformCorrection ( FGeometryParticleHandle InParticle,
const FVec3 InPos,
const FRotation3 InRot,
const bool  bApplyToConnectedBodies,
const bool  bInRecalculateFrictionOnConnectedBodies = true,
const TArray< FParticleID > &  ExcludeConnections = TArray<FParticleID>() 
)

◆ ApplyParticleTransformCorrectionDelta()

void Chaos::FPBDRigidsEvolutionGBF::ApplyParticleTransformCorrectionDelta ( FGeometryParticleHandle InParticle,
const FVec3 InPosDelta,
const FVec3 InRotDelta,
const bool  bApplyToConnectedBodies,
const bool  bInRecalculateFrictionOnConnectedBodies = true,
const TArray< FParticleID > &  ExcludeConnections = TArray<FParticleID>() 
)

◆ ApplyParticleTransformCorrectionImpl()

void Chaos::FPBDRigidsEvolutionGBF::ApplyParticleTransformCorrectionImpl ( FGeometryParticleHandle InParticle,
const FRigidTransform3 InTransform,
const bool  bInRecalculateFriction = true 
)
protected

◆ ApplySleepOnConnectedParticles()

void Chaos::FPBDRigidsEvolutionGBF::ApplySleepOnConnectedParticles ( FGeometryParticleHandle InParticle)

◆ CreateExternalResimCache()

TUniquePtr< IResimCacheBase > Chaos::FPBDRigidsEvolutionGBF::CreateExternalResimCache ( ) const

◆ CreateJointConstraint()

FPBDJointConstraintHandle * Chaos::FPBDRigidsEvolutionGBF::CreateJointConstraint ( const FParticlePair InParticlePair,
const FPBDJointSettings InJointSettings 
)

◆ DestroyJointConstraint()

void Chaos::FPBDRigidsEvolutionGBF::DestroyJointConstraint ( FPBDJointConstraintHandle InJointHandle)

◆ DestroyParticleCollisionsInAllocator()

void Chaos::FPBDRigidsEvolutionGBF::DestroyParticleCollisionsInAllocator ( FGeometryParticleHandle Particle)

◆ DestroyTransientConstraints() [1/2]

void Chaos::FPBDRigidsEvolutionGBF::DestroyTransientConstraints ( )
finaloverridevirtual

Reimplemented from Chaos::FPBDRigidsEvolutionBase.

◆ DestroyTransientConstraints() [2/2]

void Chaos::FPBDRigidsEvolutionGBF::DestroyTransientConstraints ( FGeometryParticleHandle Particle)
finaloverridevirtual

Destroy all transient constraints (collisions) involving the specified particle.

Reimplemented from Chaos::FPBDRigidsEvolutionBase.

◆ DispatchKinematicTargetsTasks()

template<typename LambdaType >
void Chaos::FPBDRigidsEvolutionGBF::DispatchKinematicTargetsTasks ( int32  DispatchBatchIndex,
int32  NumParticles,
FReal  Dt,
FReal  StepFraction,
bool  IsLastStep,
LambdaType  ReturnHandle 
)
protected

◆ DoInternalParticleInitilization()

FORCEINLINE void Chaos::FPBDRigidsEvolutionGBF::DoInternalParticleInitilization ( const FGeometryParticleHandle OldParticle,
FGeometryParticleHandle NewParticle 
)
inline

◆ EndFrame()

void Chaos::FPBDRigidsEvolutionGBF::EndFrame ( FReal  Dt)
inline

◆ GetBroadPhase()

FSpatialAccelerationBroadPhase & Chaos::FPBDRigidsEvolutionGBF::GetBroadPhase ( )
inline

◆ GetCharacterGroundConstraints() [1/2]

FORCEINLINE FCharacterGroundConstraintContainer & Chaos::FPBDRigidsEvolutionGBF::GetCharacterGroundConstraints ( )
inline

◆ GetCharacterGroundConstraints() [2/2]

FORCEINLINE const FCharacterGroundConstraintContainer & Chaos::FPBDRigidsEvolutionGBF::GetCharacterGroundConstraints ( ) const
inline

◆ GetCollisionConstraints() [1/2]

FORCEINLINE FCollisionConstraints & Chaos::FPBDRigidsEvolutionGBF::GetCollisionConstraints ( )
inline

◆ GetCollisionConstraints() [2/2]

FORCEINLINE const FCollisionConstraints & Chaos::FPBDRigidsEvolutionGBF::GetCollisionConstraints ( ) const
inline

◆ GetCollisionDetector() [1/2]

FORCEINLINE FCollisionDetector & Chaos::FPBDRigidsEvolutionGBF::GetCollisionDetector ( )
inline

◆ GetCollisionDetector() [2/2]

FORCEINLINE const FCollisionDetector & Chaos::FPBDRigidsEvolutionGBF::GetCollisionDetector ( ) const
inline

◆ GetConnectedParticles()

TArray< FGeometryParticleHandle * > Chaos::FPBDRigidsEvolutionGBF::GetConnectedParticles ( FGeometryParticleHandle InParticle,
const TArray< FParticleID > &  ExcludeConnections = TArray<FParticleID>() 
)
protected

◆ GetCurrentStepResimCache()

FEvolutionResimCache * Chaos::FPBDRigidsEvolutionGBF::GetCurrentStepResimCache ( )
inlineprotected

◆ GetFirstClusteredPhysicsMaterial()

const FChaosPhysicsMaterial * Chaos::FPBDRigidsEvolutionGBF::GetFirstClusteredPhysicsMaterial ( const FGeometryParticleHandle Particle) const

◆ GetGravityForces() [1/2]

FORCEINLINE FGravityForces & Chaos::FPBDRigidsEvolutionGBF::GetGravityForces ( )
inline

◆ GetGravityForces() [2/2]

FORCEINLINE const FGravityForces & Chaos::FPBDRigidsEvolutionGBF::GetGravityForces ( ) const
inline

◆ GetJointCombinedConstraints() [1/2]

FORCEINLINE FJointConstraints & Chaos::FPBDRigidsEvolutionGBF::GetJointCombinedConstraints ( )
inline

◆ GetJointCombinedConstraints() [2/2]

FORCEINLINE const FJointConstraints & Chaos::FPBDRigidsEvolutionGBF::GetJointCombinedConstraints ( ) const
inline

◆ GetJointConstraints() [1/2]

FORCEINLINE FPBDJointConstraints & Chaos::FPBDRigidsEvolutionGBF::GetJointConstraints ( )
inline

◆ GetJointConstraints() [2/2]

FORCEINLINE const FPBDJointConstraints & Chaos::FPBDRigidsEvolutionGBF::GetJointConstraints ( ) const
inline

◆ GetRigidClustering() [1/2]

FORCEINLINE FRigidClustering & Chaos::FPBDRigidsEvolutionGBF::GetRigidClustering ( )
inline

◆ GetRigidClustering() [2/2]

FORCEINLINE const FRigidClustering & Chaos::FPBDRigidsEvolutionGBF::GetRigidClustering ( ) const
inline

◆ GetSuspensionConstraints() [1/2]

FORCEINLINE FPBDSuspensionConstraints & Chaos::FPBDRigidsEvolutionGBF::GetSuspensionConstraints ( )
inline

◆ GetSuspensionConstraints() [2/2]

FORCEINLINE const FPBDSuspensionConstraints & Chaos::FPBDRigidsEvolutionGBF::GetSuspensionConstraints ( ) const
inline

◆ Integrate() [1/2]

template<typename TParticleView >
void Chaos::FPBDRigidsEvolutionGBF::Integrate ( const TParticleView InParticles,
FReal  Dt 
)
inline

◆ Integrate() [2/2]

void Chaos::FPBDRigidsEvolutionGBF::Integrate ( FReal  Dt)

◆ OnParticleMoved()

void Chaos::FPBDRigidsEvolutionGBF::OnParticleMoved ( FGeometryParticleHandle InParticle,
const FVec3 PrevX,
const FRotation3 PrevR,
const bool  bIsTeleport,
const bool  bWakeUp = true 
)

Called when a particle is moved. We need to reset some friction properties, sleeping properties, etc

◆ ParticleMaterialChanged()

void Chaos::FPBDRigidsEvolutionGBF::ParticleMaterialChanged ( FGeometryParticleHandle Particle)

◆ ReloadParticlesCache()

void Chaos::FPBDRigidsEvolutionGBF::ReloadParticlesCache ( )

Reload the particles cache for all particles where appropriate

◆ ResetCollisions()

void Chaos::FPBDRigidsEvolutionGBF::ResetCollisions ( )
overridevirtual

Reset the collisions warm starting when resimulate. Ideally we should store that in the RewindData history but probably too expensive for now

Reimplemented from Chaos::FPBDRigidsEvolutionBase.

◆ ResetVSmoothFromForces()

template<bool bPersistent>
void Chaos::FPBDRigidsEvolutionGBF::ResetVSmoothFromForces ( TPBDRigidParticleHandleImp< FReal, 3, bPersistent > &  Particle)
inline

◆ Serialize()

void Chaos::FPBDRigidsEvolutionGBF::Serialize ( FChaosArchive Ar)

◆ SetCurrentStepResimCache()

void Chaos::FPBDRigidsEvolutionGBF::SetCurrentStepResimCache ( IResimCacheBase InCurrentStepResimCache)

◆ SetInternalParticleInitilizationFunction()

FORCEINLINE void Chaos::FPBDRigidsEvolutionGBF::SetInternalParticleInitilizationFunction ( const FPBDRigidsEvolutionInternalHandleCallback Cb)
inline

◆ SetIsDeterministic()

void Chaos::FPBDRigidsEvolutionGBF::SetIsDeterministic ( const bool  bInIsDeterministic)

◆ SetJointConstraintSettings()

FPBDJointConstraintHandle * Chaos::FPBDRigidsEvolutionGBF::SetJointConstraintSettings ( FPBDJointConstraintHandle InJointHandle,
const FPBDJointSettings InJointSettings 
)

◆ SetName()

virtual void Chaos::FPBDRigidsEvolutionGBF::SetName ( const FString &  InName)
inlinevirtual

Reimplemented from Chaos::FPBDRigidsEvolutionBase.

◆ SetParticleDynamics()

void Chaos::FPBDRigidsEvolutionGBF::SetParticleDynamics ( FPBDRigidParticleHandle Rigid,
const FParticleDynamics Dynamics 
)

User has changed particle dynamics

◆ SetParticleKinematicTarget()

void Chaos::FPBDRigidsEvolutionGBF::SetParticleKinematicTarget ( FGeometryParticleHandle ParticleHandle,
const FKinematicTarget NewKinematicTarget 
)

Set the kinematic target for a particle. This will exist for only one tick - a new target must be set for the next tick if required. If called on a dynamic object, is equivalent to SetParticleTransform with bIsTeleport=false

◆ SetParticleMassProps()

void Chaos::FPBDRigidsEvolutionGBF::SetParticleMassProps ( FPBDRigidParticleHandle Rigid,
const FParticleMassProps MassProperties 
)

User has changed particle mass properties

◆ SetParticleTransform()

void Chaos::FPBDRigidsEvolutionGBF::SetParticleTransform ( FGeometryParticleHandle InParticle,
const FVec3 InPos,
const FRotation3 InRot,
const bool  bIsTeleport,
const bool  bWakeUp = true 
)

User has moved a particle Does not change velocity. Will wake the particle if this is a move (i.e., bIsTeleport is false)

◆ SetParticleTransformSwept()

void Chaos::FPBDRigidsEvolutionGBF::SetParticleTransformSwept ( FGeometryParticleHandle InParticle,
const FVec3 InPos,
const FRotation3 InRot,
const bool  bIsTeleport 
)
virtual

Move a particle to a new location with a sweep and stop and the first opposing contact. Does not change velocity. Will wake the particle if this is a move (i.e., bIsTeleport is false)

◆ SetParticleVelocities()

void Chaos::FPBDRigidsEvolutionGBF::SetParticleVelocities ( FGeometryParticleHandle InParticle,
const FVec3 InV,
const FVec3f InW 
)

User has changed particle velocity or angular velocity

◆ SetPostDetectCollisionsCallback()

void Chaos::FPBDRigidsEvolutionGBF::SetPostDetectCollisionsCallback ( const FPBDRigidsEvolutionCallback Cb)
inline

◆ SetPostIntegrateCallback()

void Chaos::FPBDRigidsEvolutionGBF::SetPostIntegrateCallback ( const FPBDRigidsEvolutionCallback Cb)
inline

◆ SetPostSolveCallback()

void Chaos::FPBDRigidsEvolutionGBF::SetPostSolveCallback ( const FPBDRigidsEvolutionCallback Cb)
inline

◆ SetPreApplyCallback()

void Chaos::FPBDRigidsEvolutionGBF::SetPreApplyCallback ( const FPBDRigidsEvolutionCallback Cb)
inline

◆ SetPreIntegrateCallback()

void Chaos::FPBDRigidsEvolutionGBF::SetPreIntegrateCallback ( const FPBDRigidsEvolutionCallback Cb)
inline

◆ SetPreSolveCallback()

void Chaos::FPBDRigidsEvolutionGBF::SetPreSolveCallback ( const FPBDRigidsEvolutionCallback Cb)
inline

◆ SetShockPropagationIterations()

void Chaos::FPBDRigidsEvolutionGBF::SetShockPropagationIterations ( const int32  InPositionIts,
const int32  InVelocityIts 
)

◆ TransferJointConstraintCollisions()

void Chaos::FPBDRigidsEvolutionGBF::TransferJointConstraintCollisions ( )

◆ UpdateCollisionSolverType()

void Chaos::FPBDRigidsEvolutionGBF::UpdateCollisionSolverType ( )
protected

◆ UpdateInertiaConditioning()

void Chaos::FPBDRigidsEvolutionGBF::UpdateInertiaConditioning ( )
protected

◆ WaitIntegrationComplete()

void Chaos::FPBDRigidsEvolutionGBF::WaitIntegrationComplete ( )
overridevirtual

Reimplemented from Chaos::FPBDRigidsEvolutionBase.

Member Data Documentation

◆ bIsDeterministic

bool Chaos::FPBDRigidsEvolutionGBF::bIsDeterministic
protected

◆ BroadPhase

FSpatialAccelerationBroadPhase Chaos::FPBDRigidsEvolutionGBF::BroadPhase
protected

◆ CCDManager

FCCDManager Chaos::FPBDRigidsEvolutionGBF::CCDManager
protected

◆ CCDModifiers

const TArray<ISimCallbackObject*>* Chaos::FPBDRigidsEvolutionGBF::CCDModifiers
protected

◆ CharacterGroundConstraints

FCharacterGroundConstraintContainer Chaos::FPBDRigidsEvolutionGBF::CharacterGroundConstraints
protected

◆ Clustering

FRigidClustering Chaos::FPBDRigidsEvolutionGBF::Clustering
protected

◆ CollisionConstraints

FCollisionConstraints Chaos::FPBDRigidsEvolutionGBF::CollisionConstraints
protected

◆ CollisionDetector

FSpatialAccelerationCollisionDetector Chaos::FPBDRigidsEvolutionGBF::CollisionDetector
protected

◆ CollisionModifiers

const TArray<ISimCallbackObject*>* Chaos::FPBDRigidsEvolutionGBF::CollisionModifiers
protected

◆ CurrentStepResimCacheImp

FEvolutionResimCache* Chaos::FPBDRigidsEvolutionGBF::CurrentStepResimCacheImp
protected

◆ DefaultCollisionCullDistance

constexpr FRealSingle Chaos::FPBDRigidsEvolutionGBF::DefaultCollisionCullDistance = 3.0f
staticconstexpr

◆ DefaultCollisionDepenetrationVelocity

constexpr FRealSingle Chaos::FPBDRigidsEvolutionGBF::DefaultCollisionDepenetrationVelocity = -1.0f
staticconstexpr

◆ DefaultCollisionMarginFraction

constexpr FRealSingle Chaos::FPBDRigidsEvolutionGBF::DefaultCollisionMarginFraction = 0.05f
staticconstexpr

◆ DefaultCollisionMarginMax

constexpr FRealSingle Chaos::FPBDRigidsEvolutionGBF::DefaultCollisionMarginMax = 10.0f
staticconstexpr

◆ DefaultCollisionMaxPushOutVelocity

constexpr FRealSingle Chaos::FPBDRigidsEvolutionGBF::DefaultCollisionMaxPushOutVelocity = 1000.0f
staticconstexpr

◆ DefaultNumPositionIterations

constexpr int32 Chaos::FPBDRigidsEvolutionGBF::DefaultNumPositionIterations = 8
staticconstexpr

◆ DefaultNumProjectionIterations

constexpr int32 Chaos::FPBDRigidsEvolutionGBF::DefaultNumProjectionIterations = 1
staticconstexpr

◆ DefaultNumVelocityIterations

constexpr int32 Chaos::FPBDRigidsEvolutionGBF::DefaultNumVelocityIterations = 2
staticconstexpr

◆ DefaultRestitutionThreshold

constexpr int32 Chaos::FPBDRigidsEvolutionGBF::DefaultRestitutionThreshold = 1000
staticconstexpr

◆ GravityForces

FGravityForces Chaos::FPBDRigidsEvolutionGBF::GravityForces
protected

◆ InertiaConditioningEpoch

int32 Chaos::FPBDRigidsEvolutionGBF::InertiaConditioningEpoch
protected

◆ InternalParticleInitilization

FPBDRigidsEvolutionInternalHandleCallback Chaos::FPBDRigidsEvolutionGBF::InternalParticleInitilization
protected

◆ JointConstraints

FPBDJointCombinedConstraints Chaos::FPBDRigidsEvolutionGBF::JointConstraints
protected

◆ MidPhaseModifiers

const TArray<ISimCallbackObject*>* Chaos::FPBDRigidsEvolutionGBF::MidPhaseModifiers
protected

◆ PostDetectCollisionsCallback

FPBDRigidsEvolutionCallback Chaos::FPBDRigidsEvolutionGBF::PostDetectCollisionsCallback
protected

◆ PostIntegrateCallback

FPBDRigidsEvolutionCallback Chaos::FPBDRigidsEvolutionGBF::PostIntegrateCallback
protected

◆ PostSolveCallback

FPBDRigidsEvolutionCallback Chaos::FPBDRigidsEvolutionGBF::PostSolveCallback
protected

◆ PreIntegrateCallback

FPBDRigidsEvolutionCallback Chaos::FPBDRigidsEvolutionGBF::PreIntegrateCallback
protected

◆ PreSolveCallback

FPBDRigidsEvolutionCallback Chaos::FPBDRigidsEvolutionGBF::PreSolveCallback
protected

◆ SuspensionConstraints

FPBDSuspensionConstraints Chaos::FPBDRigidsEvolutionGBF::SuspensionConstraints
protected

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