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

#include <PhysicsSolverBase.h>

+ Inheritance diagram for Chaos::FPhysicsSolverBase:

Public Member Functions

template<typename Lambda >
void CastHelper (const Lambda &Func)
 
FPBDRigidsSolverCastChecked ()
 
CHAOS_API void ChangeBufferMode (EMultiBufferMode InBufferMode)
 
void AddDirtyProxy (IPhysicsProxyBase *ProxyBaseIn)
 
void RemoveDirtyProxy (IPhysicsProxyBase *ProxyBaseIn)
 
void RemoveDirtyProxyFromHistory_Internal (IPhysicsProxyBase *ProxyBaseIn)
 
void RemoveDirtyProxyIfNoShapesAreDirty (IPhysicsProxyBase *ProxyBaseIn)
 
const FDirtyProxiesBucketInfoGetDirtyProxyBucketInfo_External ()
 
int32 GetDirtyProxyBucketInfoNum_External (EPhysicsProxyType Type)
 
template<typename TProxiesArray >
void AddDirtyProxiesUnsafe (TProxiesArray &ProxiesArray)
 
void AddDirtyProxyShape (IPhysicsProxyBase *ProxyBaseIn, int32 ShapeIdx)
 
void SetNumDirtyShapes (IPhysicsProxyBase *Proxy, int32 NumShapes)
 
template<typename TSimCallbackObjectType , typename... ConstructorArgTypes>
TSimCallbackObjectTypeCreateAndRegisterSimCallbackObject_External (ConstructorArgTypes &&... ConstructorArgs)
 
template<typename TSimCallbackObjectType >
TSimCallbackObjectTypeCreateAndRegisterSimCallbackObject_External (bool bContactModification, bool bRegisterRewindCallback=false)
 
CHAOS_API void EnqueueSimcallbackRewindRegisteration (ISimCallbackObject *Callback)
 
void UnregisterAndFreeSimCallbackObject_External (ISimCallbackObject *SimCallbackObject)
 
template<typename Lambda >
void RegisterSimOneShotCallback (Lambda &&Func)
 
template<typename Lambda >
void EnqueueCommandImmediate (Lambda &&Func)
 
template<typename Lambda >
void EnqueueCommandScheduled_External (const int32 ExecuteOnStep, Lambda &&Func)
 
CHAOS_API void SetRewindCallback (TUniquePtr< IRewindCallback > &&RewindCallback)
 
FRewindDataGetRewindData ()
 
IRewindCallbackGetRewindCallback ()
 
bool ShouldApplyRewindCallbacks ()
 
void SetUseCollisionResimCache (bool InUseCollisionResimCache)
 
bool GetUseCollisionResimCache () const
 
void SetPhysicsReplication (FPhysicsReplicationAsync *InPhysicsReplication)
 
FPhysicsReplicationAsyncGetPhysicsReplication ()
 
void SetPhysicsReplication_Internal (IPhysicsReplicationAsync *InPhysicsReplication)
 
IPhysicsReplicationAsyncGetPhysicsReplication_Internal ()
 
void SetPhysicsReplicationLOD_Internal (IPhysicsReplicationLODAsync *InPhysicsReplicationLOD)
 
IPhysicsReplicationLODAsyncGetPhysicsReplicationLOD_Internal ()
 
FGeometryParticleUniqueIdxToGTParticle_External (const FUniqueIdx &UniqueIdx) const
 
void WaitOnPendingTasks_External ()
 
virtual void KillSafeAsyncTasks ()
 
virtual bool AreAnyTasksPending () const
 
bool IsPendingTasksComplete () const
 
const UObjectGetOwner () const
 
void SetOwner (const UObject *InOwner)
 
void SetThreadingMode_External (EThreadingModeTemp InThreadingMode)
 
void MarkShuttingDown ()
 
bool IsShuttingDown () const
 
CHAOS_API void EnableAsyncMode (FReal FixedDt)
 
FReal GetAsyncDeltaTime () const
 
CHAOS_API void DisableAsyncMode ()
 
virtual void ConditionalApplyRewind_Internal ()
 
virtual bool IsResimming () const
 
FChaosMarshallingManagerGetMarshallingManager ()
 
FChaosResultsManagerGetResultsManager ()
 
EThreadingModeTemp GetThreadingMode () const
 
CHAOS_API FGraphEventRef AdvanceAndDispatch_External (FReal InDt)
 
CHAOS_API FName GetDebugName () const
 
bool IsGameThreadFrozen () const
 
void SetGameThreadFrozen (bool InGameThreadFrozen)
 
virtual void ApplyCallbacks_Internal ()
 
void FinalizeCallbackData_Internal ()
 
CHAOS_API void UpdateParticleInAccelerationStructure_External (FGeometryParticle *Particle, EPendingSpatialDataOperation InOperation)
 
bool IsPaused_External () const
 
void SetIsPaused_External (bool bShouldPause)
 
template<typename TDispatcher >
void PullPhysicsStateForEachDirtyProxy_External (TDispatcher &Dispatcher)
 
template<typename RigidLambda , typename ConstraintLambda , typename GeometryCollectionLambda >
void PullPhysicsStateForEachDirtyProxy_External (const RigidLambda &RigidFunc, const ConstraintLambda &ConstraintFunc, const GeometryCollectionLambda &GeometryCollectionFunc)
 
template<typename RigidLambda , typename ConstraintLambda >
void PullPhysicsStateForEachDirtyProxy_External (const RigidLambda &RigidFunc, const ConstraintLambda &ConstraintFunc)
 
bool IsUsingAsyncResults () const
 
bool IsUsingFixedDt () const
 
void SetMaxDeltaTime_External (float InMaxDeltaTime)
 
void SetMinDeltaTime_External (float InMinDeltaTime)
 
float GetMaxDeltaTime_External () const
 
float GetMinDeltaTime_External () const
 
void SetMaxSubSteps_External (const int32 InMaxSubSteps)
 
int32 GetMaxSubSteps_External () const
 
void SetSolverSubstep_External (bool bInSubstepExternal)
 
bool GetSolverSubstep_External () const
 
FReal GetAccumulatedTime () const
 
FReal GetPhysicsResultsTime_External () const
 
virtual void FlipEventManagerBuffer ()
 
void SetSolverTime (const FReal InTime)
 
const FReal GetSolverTime () const
 
FReal GetLastDt () const
 
void SetAsyncPhysicsBlockMode (EAsyncBlockMode InAsyncBlockMode)
 
void SetAsyncInterpolationMultiplier (FRealSingle InAsyncInterpolationMultiplier)
 
float GetAsyncInterpolationMultiplier () const
 
bool IsStandaloneSolver () const
 
void SetStandaloneSolver (const bool bStandaloneSolver)
 
FPhysSceneLockGetExternalDataLock_External () const
 
CHAOS_API void SetStealAdvanceTasks_ForTesting (bool bInStealAdvanceTasksForTesting)
 
CHAOS_API void PopAndExecuteStolenAdvanceTask_ForTesting ()
 
- Public Member Functions inherited from Chaos::FPhysicsSolverEvents
virtual ~FPhysicsSolverEvents ()
 
CHAOS_API FDelegateHandle AddPreAdvanceCallback (FSolverPreAdvance::FDelegate InDelegate)
 
CHAOS_API bool RemovePreAdvanceCallback (FDelegateHandle InHandle)
 
CHAOS_API FDelegateHandle AddPreBufferCallback (FSolverPreAdvance::FDelegate InDelegate)
 
CHAOS_API bool RemovePreBufferCallback (FDelegateHandle InHandle)
 
CHAOS_API FDelegateHandle AddPostAdvanceCallback (FSolverPostAdvance::FDelegate InDelegate)
 
CHAOS_API bool RemovePostAdvanceCallback (FDelegateHandle InHandle)
 
CHAOS_API FDelegateHandle AddTeardownCallback (FSolverTeardown::FDelegate InDelegate)
 
CHAOS_API bool RemoveTeardownCallback (FDelegateHandle InHandle)
 
void ClearCallbacks ()
 

Static Public Member Functions

static bool CanDebugNetworkPhysicsPrediction ()
 
static bool IsNetworkPhysicsPredictionEnabled ()
 
static float GetPhysicsHistoryTimeLength ()
 
static int32 GetPhysicsHistoryCount ()
 
static float ResimulationErrorThreshold ()
 
static bool GetResimulationErrorPositionThresholdEnabled ()
 
static float GetResimulationErrorPositionThreshold ()
 
static bool GetResimulationErrorRotationThresholdEnabled ()
 
static float GetResimulationErrorRotationThreshold ()
 
static bool GetResimulationErrorLinearVelocityThresholdEnabled ()
 
static float GetResimulationErrorLinearVelocityThreshold ()
 
static bool GetResimulationErrorAngularVelocityThresholdEnabled ()
 
static float GetResimulationErrorAngularVelocityThreshold ()
 
static float NetworkPhysicsInterpolationLerp ()
 

Protected Member Functions

CHAOS_API FPhysicsSolverBase (const EMultiBufferMode BufferingModeIn, const EThreadingModeTemp InThreadingMode, UObject *InOwner, FReal AsyncDt)
 
virtual CHAOS_API ~FPhysicsSolverBase ()
 
 FPhysicsSolverBase ()=delete
 
 FPhysicsSolverBase (const FPhysicsSolverBase &InCopy)=delete
 
 FPhysicsSolverBase (FPhysicsSolverBase &&InSteal)=delete
 
FPhysicsSolverBaseoperator= (const FPhysicsSolverBase &InCopy)=delete
 
FPhysicsSolverBaseoperator= (FPhysicsSolverBase &&InSteal)=delete
 
virtual void PrepareAdvanceBy (const FReal Dt)=0
 
virtual void AdvanceSolverBy (const FSubStepInfo &SubStepInfo=FSubStepInfo())=0
 
virtual void PushPhysicsState (const FReal Dt, const int32 NumSteps, const int32 NumExternalSteps)=0
 
virtual void ProcessPushedData_Internal (FPushPhysicsData &PushDataArray)=0
 
virtual void SetExternalTimestampConsumed_Internal (const int32 Timestamp)=0
 
CHAOS_API void TrackGTParticle_External (FGeometryParticle &Particle)
 
CHAOS_API void ClearGTParticle_External (FGeometryParticle &Particle)
 

Static Protected Member Functions

static CHAOS_API void DestroySolver (FPhysicsSolverBase &InSolver)
 

Protected Attributes

bool bIsStandaloneSolver = false
 
EMultiBufferMode BufferMode
 
EThreadingModeTemp ThreadingMode
 
FChaosMarshallingManager MarshallingManager
 
TUniquePtr< FChaosResultsManagerPullResultsManager
 
TUniquePtr< FPendingSpatialDataQueuePendingSpatialOperations_External
 
TArray< ISimCallbackObject * > SimCallbackObjects
 
TArray< ISimCallbackObject * > MidPhaseModifiers
 
TArray< ISimCallbackObject * > CCDModifiers
 
TArray< ISimCallbackObject * > StrainModifiers
 
TArray< ISimCallbackObject * > ContactModifiers
 
TArray< ISimCallbackObject * > RegistrationWatchers
 
TArray< ISimCallbackObject * > UnregistrationWatchers
 
TArray< ISimCallbackObject * > PhysicsObjectUnregistrationWatchers
 
TUniquePtr< FRewindDataMRewindData
 
TUniquePtr< IRewindCallbackMRewindCallback
 
FPhysicsReplicationAsyncPhysicsReplication_DEPRECATED
 
IPhysicsReplicationAsyncPhysicsReplicationAsync
 
IPhysicsReplicationLODAsyncPhysicsReplicationLODAsync
 
bool bUseCollisionResimCache
 
FGraphEventRef PendingTasks
 
bool bSolverHasFrozenGameThreadCallbacks = false
 
bool bGameThreadFrozen = false
 
FReal MLastDt = FReal(0)
 
FReal MTime = FReal(0)
 
- Protected Attributes inherited from Chaos::FPhysicsSolverEvents
FSolverPreAdvance EventPreSolve
 
FSolverPreBuffer EventPreBuffer
 
FSolverPostAdvance EventPostSolve
 
FSolverTeardown EventTeardown
 

Friends

template<ELockType >
struct TSolverSimMaterialScope
 

Constructor & Destructor Documentation

◆ FPhysicsSolverBase() [1/4]

Chaos::FPhysicsSolverBase::FPhysicsSolverBase ( const EMultiBufferMode  BufferingModeIn,
const EThreadingModeTemp  InThreadingMode,
UObject InOwner,
Chaos::FReal  InAsyncDt 
)
protected

Protected construction so callers still have to go through the module to create new instances

◆ ~FPhysicsSolverBase()

Chaos::FPhysicsSolverBase::~FPhysicsSolverBase ( )
protectedvirtual

Only allow construction with valid parameters as well as restricting to module construction

◆ FPhysicsSolverBase() [2/4]

Chaos::FPhysicsSolverBase::FPhysicsSolverBase ( )
protecteddelete

◆ FPhysicsSolverBase() [3/4]

Chaos::FPhysicsSolverBase::FPhysicsSolverBase ( const FPhysicsSolverBase InCopy)
protecteddelete

◆ FPhysicsSolverBase() [4/4]

Chaos::FPhysicsSolverBase::FPhysicsSolverBase ( FPhysicsSolverBase &&  InSteal)
protecteddelete

Member Function Documentation

◆ AddDirtyProxiesUnsafe()

template<typename TProxiesArray >
void Chaos::FPhysicsSolverBase::AddDirtyProxiesUnsafe ( TProxiesArray ProxiesArray)
inline

◆ AddDirtyProxy()

void Chaos::FPhysicsSolverBase::AddDirtyProxy ( IPhysicsProxyBase ProxyBaseIn)
inline

◆ AddDirtyProxyShape()

void Chaos::FPhysicsSolverBase::AddDirtyProxyShape ( IPhysicsProxyBase ProxyBaseIn,
int32  ShapeIdx 
)
inline

◆ AdvanceAndDispatch_External()

FGraphEventRef Chaos::FPhysicsSolverBase::AdvanceAndDispatch_External ( FReal  InDt)

◆ AdvanceSolverBy()

virtual void Chaos::FPhysicsSolverBase::AdvanceSolverBy ( const FSubStepInfo SubStepInfo = FSubStepInfo())
protectedpure virtual

◆ ApplyCallbacks_Internal()

virtual void Chaos::FPhysicsSolverBase::ApplyCallbacks_Internal ( )
inlinevirtual

Reimplemented in Chaos::FPBDRigidsSolver.

◆ AreAnyTasksPending()

virtual bool Chaos::FPhysicsSolverBase::AreAnyTasksPending ( ) const
inlinevirtual

Reimplemented in Chaos::FPBDRigidsSolver.

◆ CanDebugNetworkPhysicsPrediction()

static bool Chaos::FPhysicsSolverBase::CanDebugNetworkPhysicsPrediction ( )
inlinestatic

Check if we can enable debugging informations for network physics

◆ CastChecked()

FPBDRigidsSolver & Chaos::FPhysicsSolverBase::CastChecked ( )
inline

◆ CastHelper()

template<typename Lambda >
void Chaos::FPhysicsSolverBase::CastHelper ( const Lambda &  Func)
inline

◆ ChangeBufferMode()

void Chaos::FPhysicsSolverBase::ChangeBufferMode ( EMultiBufferMode  InBufferMode)

◆ ClearGTParticle_External()

void Chaos::FPhysicsSolverBase::ClearGTParticle_External ( FGeometryParticle Particle)
protected

◆ ConditionalApplyRewind_Internal()

virtual void Chaos::FPhysicsSolverBase::ConditionalApplyRewind_Internal ( )
inlinevirtual

◆ CreateAndRegisterSimCallbackObject_External() [1/2]

TSimCallbackObjectType * Chaos::FPhysicsSolverBase::CreateAndRegisterSimCallbackObject_External ( bool  bContactModification,
bool  bRegisterRewindCallback = false 
)
inline

◆ CreateAndRegisterSimCallbackObject_External() [2/2]

template<typename TSimCallbackObjectType , typename... ConstructorArgTypes>
TSimCallbackObjectType * Chaos::FPhysicsSolverBase::CreateAndRegisterSimCallbackObject_External ( ConstructorArgTypes &&...  ConstructorArgs)
inline

Creates a new sim callback object of the type given. Caller expected to free using FreeSimCallbackObject_External

◆ DestroySolver()

void Chaos::FPhysicsSolverBase::DestroySolver ( FPhysicsSolverBase InSolver)
staticprotected

◆ DisableAsyncMode()

void Chaos::FPhysicsSolverBase::DisableAsyncMode ( )

◆ EnableAsyncMode()

void Chaos::FPhysicsSolverBase::EnableAsyncMode ( FReal  FixedDt)

◆ EnqueueCommandImmediate()

template<typename Lambda >
void Chaos::FPhysicsSolverBase::EnqueueCommandImmediate ( Lambda &&  Func)
inline

◆ EnqueueCommandScheduled_External()

template<typename Lambda >
void Chaos::FPhysicsSolverBase::EnqueueCommandScheduled_External ( const int32  ExecuteOnStep,
Lambda &&  Func 
)
inline

Enqueue a lambda function (command) to run on the physics thread on a specific physics step The command will be reapplied during physics resimulation on the same step

◆ EnqueueSimcallbackRewindRegisteration()

void Chaos::FPhysicsSolverBase::EnqueueSimcallbackRewindRegisteration ( ISimCallbackObject Callback)

◆ FinalizeCallbackData_Internal()

void Chaos::FPhysicsSolverBase::FinalizeCallbackData_Internal ( )
inline

◆ FlipEventManagerBuffer()

virtual void Chaos::FPhysicsSolverBase::FlipEventManagerBuffer ( )
inlinevirtual

Reimplemented in Chaos::FPBDRigidsSolver.

◆ GetAccumulatedTime()

FReal Chaos::FPhysicsSolverBase::GetAccumulatedTime ( ) const
inline

◆ GetAsyncDeltaTime()

FReal Chaos::FPhysicsSolverBase::GetAsyncDeltaTime ( ) const
inline

◆ GetAsyncInterpolationMultiplier()

float Chaos::FPhysicsSolverBase::GetAsyncInterpolationMultiplier ( ) const
inline

◆ GetDebugName()

FName Chaos::FPhysicsSolverBase::GetDebugName ( ) const

◆ GetDirtyProxyBucketInfo_External()

const FDirtyProxiesBucketInfo & Chaos::FPhysicsSolverBase::GetDirtyProxyBucketInfo_External ( )
inline

◆ GetDirtyProxyBucketInfoNum_External()

int32 Chaos::FPhysicsSolverBase::GetDirtyProxyBucketInfoNum_External ( EPhysicsProxyType  Type)
inline

◆ GetExternalDataLock_External()

FPhysSceneLock & Chaos::FPhysicsSolverBase::GetExternalDataLock_External ( ) const
inline

Get the lock used for external data manipulation. A better API would be to use scoped locks so that getting a write lock is non-const

◆ GetLastDt()

FReal Chaos::FPhysicsSolverBase::GetLastDt ( ) const
inline

◆ GetMarshallingManager()

FChaosMarshallingManager & Chaos::FPhysicsSolverBase::GetMarshallingManager ( )
inline

◆ GetMaxDeltaTime_External()

float Chaos::FPhysicsSolverBase::GetMaxDeltaTime_External ( ) const
inline

◆ GetMaxSubSteps_External()

int32 Chaos::FPhysicsSolverBase::GetMaxSubSteps_External ( ) const
inline

◆ GetMinDeltaTime_External()

float Chaos::FPhysicsSolverBase::GetMinDeltaTime_External ( ) const
inline

◆ GetOwner()

const UObject * Chaos::FPhysicsSolverBase::GetOwner ( ) const
inline

◆ GetPhysicsHistoryCount()

static int32 Chaos::FPhysicsSolverBase::GetPhysicsHistoryCount ( )
inlinestatic

Get the number of physics history frames to cache

◆ GetPhysicsHistoryTimeLength()

static float Chaos::FPhysicsSolverBase::GetPhysicsHistoryTimeLength ( )
inlinestatic

Get the time length to cache physics history for, based on Project Settings -> Physics -> Physics Prediction -> MaxSupportedLatencyPrediction

◆ GetPhysicsReplication()

FPhysicsReplicationAsync * Chaos::FPhysicsSolverBase::GetPhysicsReplication ( )
inline

◆ GetPhysicsReplication_Internal()

IPhysicsReplicationAsync * Chaos::FPhysicsSolverBase::GetPhysicsReplication_Internal ( )
inline

◆ GetPhysicsReplicationLOD_Internal()

IPhysicsReplicationLODAsync * Chaos::FPhysicsSolverBase::GetPhysicsReplicationLOD_Internal ( )
inline

◆ GetPhysicsResultsTime_External()

FReal Chaos::FPhysicsSolverBase::GetPhysicsResultsTime_External ( ) const
inline

Returns the time used by physics results. If fixed dt is used this will be the interpolated time

◆ GetResimulationErrorAngularVelocityThreshold()

static float Chaos::FPhysicsSolverBase::GetResimulationErrorAngularVelocityThreshold ( )
inlinestatic

◆ GetResimulationErrorAngularVelocityThresholdEnabled()

static bool Chaos::FPhysicsSolverBase::GetResimulationErrorAngularVelocityThresholdEnabled ( )
inlinestatic

◆ GetResimulationErrorLinearVelocityThreshold()

static float Chaos::FPhysicsSolverBase::GetResimulationErrorLinearVelocityThreshold ( )
inlinestatic

◆ GetResimulationErrorLinearVelocityThresholdEnabled()

static bool Chaos::FPhysicsSolverBase::GetResimulationErrorLinearVelocityThresholdEnabled ( )
inlinestatic

◆ GetResimulationErrorPositionThreshold()

static float Chaos::FPhysicsSolverBase::GetResimulationErrorPositionThreshold ( )
inlinestatic

◆ GetResimulationErrorPositionThresholdEnabled()

static bool Chaos::FPhysicsSolverBase::GetResimulationErrorPositionThresholdEnabled ( )
inlinestatic

◆ GetResimulationErrorRotationThreshold()

static float Chaos::FPhysicsSolverBase::GetResimulationErrorRotationThreshold ( )
inlinestatic

◆ GetResimulationErrorRotationThresholdEnabled()

static bool Chaos::FPhysicsSolverBase::GetResimulationErrorRotationThresholdEnabled ( )
inlinestatic

◆ GetResultsManager()

FChaosResultsManager & Chaos::FPhysicsSolverBase::GetResultsManager ( )
inline

◆ GetRewindCallback()

IRewindCallback * Chaos::FPhysicsSolverBase::GetRewindCallback ( )
inline

◆ GetRewindData()

FRewindData * Chaos::FPhysicsSolverBase::GetRewindData ( )
inline

◆ GetSolverSubstep_External()

bool Chaos::FPhysicsSolverBase::GetSolverSubstep_External ( ) const
inline

◆ GetSolverTime()

const FReal Chaos::FPhysicsSolverBase::GetSolverTime ( ) const
inline

◆ GetThreadingMode()

EThreadingModeTemp Chaos::FPhysicsSolverBase::GetThreadingMode ( ) const
inline

◆ GetUseCollisionResimCache()

bool Chaos::FPhysicsSolverBase::GetUseCollisionResimCache ( ) const
inline

Check if an additional resim cache based on IResimCacheBase (FEvolutionResimCache by default) is being used. Read FPhysicsSolverBase.SetUseCollisionResimCache() for more info.

◆ IsGameThreadFrozen()

bool Chaos::FPhysicsSolverBase::IsGameThreadFrozen ( ) const
inline

◆ IsNetworkPhysicsPredictionEnabled()

static bool Chaos::FPhysicsSolverBase::IsNetworkPhysicsPredictionEnabled ( )
inlinestatic

Check if network physics is enables or not

◆ IsPaused_External()

bool Chaos::FPhysicsSolverBase::IsPaused_External ( ) const
inline

◆ IsPendingTasksComplete()

bool Chaos::FPhysicsSolverBase::IsPendingTasksComplete ( ) const
inline

◆ IsResimming()

virtual bool Chaos::FPhysicsSolverBase::IsResimming ( ) const
inlinevirtual

◆ IsShuttingDown()

bool Chaos::FPhysicsSolverBase::IsShuttingDown ( ) const
inline

◆ IsStandaloneSolver()

bool Chaos::FPhysicsSolverBase::IsStandaloneSolver ( ) const
inline

Get the standalone solver flag

◆ IsUsingAsyncResults()

bool Chaos::FPhysicsSolverBase::IsUsingAsyncResults ( ) const
inline

◆ IsUsingFixedDt()

bool Chaos::FPhysicsSolverBase::IsUsingFixedDt ( ) const
inline

◆ KillSafeAsyncTasks()

virtual void Chaos::FPhysicsSolverBase::KillSafeAsyncTasks ( )
inlinevirtual

Reimplemented in Chaos::FPBDRigidsSolver.

◆ MarkShuttingDown()

void Chaos::FPhysicsSolverBase::MarkShuttingDown ( )
inline

◆ NetworkPhysicsInterpolationLerp()

static float Chaos::FPhysicsSolverBase::NetworkPhysicsInterpolationLerp ( )
inlinestatic

Return the interpolation lerp in case the resim is off

◆ operator=() [1/2]

FPhysicsSolverBase & Chaos::FPhysicsSolverBase::operator= ( const FPhysicsSolverBase InCopy)
protecteddelete

◆ operator=() [2/2]

FPhysicsSolverBase & Chaos::FPhysicsSolverBase::operator= ( FPhysicsSolverBase &&  InSteal)
protecteddelete

◆ PopAndExecuteStolenAdvanceTask_ForTesting()

void Chaos::FPhysicsSolverBase::PopAndExecuteStolenAdvanceTask_ForTesting ( )

◆ PrepareAdvanceBy()

virtual void Chaos::FPhysicsSolverBase::PrepareAdvanceBy ( const FReal  Dt)
protectedpure virtual

◆ ProcessPushedData_Internal()

virtual void Chaos::FPhysicsSolverBase::ProcessPushedData_Internal ( FPushPhysicsData PushDataArray)
protectedpure virtual

◆ PullPhysicsStateForEachDirtyProxy_External() [1/3]

template<typename RigidLambda , typename ConstraintLambda >
void Chaos::FPhysicsSolverBase::PullPhysicsStateForEachDirtyProxy_External ( const RigidLambda RigidFunc,
const ConstraintLambda &  ConstraintFunc 
)

◆ PullPhysicsStateForEachDirtyProxy_External() [2/3]

void Chaos::FPhysicsSolverBase::PullPhysicsStateForEachDirtyProxy_External ( const RigidLambda RigidFunc,
const ConstraintLambda &  ConstraintFunc,
const GeometryCollectionLambda GeometryCollectionFunc 
)

◆ PullPhysicsStateForEachDirtyProxy_External() [3/3]

template<typename TDispatcher >
void Chaos::FPhysicsSolverBase::PullPhysicsStateForEachDirtyProxy_External ( TDispatcher Dispatcher)

Used to update external thread data structures. Include PhysicsSolverBaseImpl.h to call this function

◆ PushPhysicsState()

virtual void Chaos::FPhysicsSolverBase::PushPhysicsState ( const FReal  Dt,
const int32  NumSteps,
const int32  NumExternalSteps 
)
protectedpure virtual

◆ RegisterSimOneShotCallback()

template<typename Lambda >
void Chaos::FPhysicsSolverBase::RegisterSimOneShotCallback ( Lambda &&  Func)
inline

◆ RemoveDirtyProxy()

void Chaos::FPhysicsSolverBase::RemoveDirtyProxy ( IPhysicsProxyBase ProxyBaseIn)
inline

◆ RemoveDirtyProxyFromHistory_Internal()

void Chaos::FPhysicsSolverBase::RemoveDirtyProxyFromHistory_Internal ( IPhysicsProxyBase ProxyBaseIn)
inline

◆ RemoveDirtyProxyIfNoShapesAreDirty()

void Chaos::FPhysicsSolverBase::RemoveDirtyProxyIfNoShapesAreDirty ( IPhysicsProxyBase ProxyBaseIn)
inline

◆ ResimulationErrorThreshold()

static float Chaos::FPhysicsSolverBase::ResimulationErrorThreshold ( )
inlinestatic

◆ SetAsyncInterpolationMultiplier()

void Chaos::FPhysicsSolverBase::SetAsyncInterpolationMultiplier ( FRealSingle  InAsyncInterpolationMultiplier)
inline

Set the async interpolation multiplier which is how many multiples of the fixed dt should we look behind for interpolation.

◆ SetAsyncPhysicsBlockMode()

void Chaos::FPhysicsSolverBase::SetAsyncPhysicsBlockMode ( EAsyncBlockMode  InAsyncBlockMode)
inline

Set the Async Block Mode, valid mode can be 0, 1, or 2 0 blocks on any physics steps generated from past GT Frames, and blocks on none of the tasks from current frame. 1 blocks on everything except the single most recent task (including tasks from current frame) 1 should guarantee we will always have a future output for interpolation from 2 frames in the past 2 doesn't block the game thread. Physics steps could be eventually be dropped if taking too much time.

◆ SetExternalTimestampConsumed_Internal()

virtual void Chaos::FPhysicsSolverBase::SetExternalTimestampConsumed_Internal ( const int32  Timestamp)
protectedpure virtual

◆ SetGameThreadFrozen()

void Chaos::FPhysicsSolverBase::SetGameThreadFrozen ( bool  InGameThreadFrozen)
inline

◆ SetIsPaused_External()

void Chaos::FPhysicsSolverBase::SetIsPaused_External ( bool  bShouldPause)
inline

◆ SetMaxDeltaTime_External()

void Chaos::FPhysicsSolverBase::SetMaxDeltaTime_External ( float  InMaxDeltaTime)
inline

◆ SetMaxSubSteps_External()

void Chaos::FPhysicsSolverBase::SetMaxSubSteps_External ( const int32  InMaxSubSteps)
inline

◆ SetMinDeltaTime_External()

void Chaos::FPhysicsSolverBase::SetMinDeltaTime_External ( float  InMinDeltaTime)
inline

◆ SetNumDirtyShapes()

void Chaos::FPhysicsSolverBase::SetNumDirtyShapes ( IPhysicsProxyBase Proxy,
int32  NumShapes 
)
inline

◆ SetOwner()

void Chaos::FPhysicsSolverBase::SetOwner ( const UObject InOwner)
inline

◆ SetPhysicsReplication()

void Chaos::FPhysicsSolverBase::SetPhysicsReplication ( FPhysicsReplicationAsync InPhysicsReplication)
inline

◆ SetPhysicsReplication_Internal()

void Chaos::FPhysicsSolverBase::SetPhysicsReplication_Internal ( IPhysicsReplicationAsync InPhysicsReplication)
inline

◆ SetPhysicsReplicationLOD_Internal()

void Chaos::FPhysicsSolverBase::SetPhysicsReplicationLOD_Internal ( IPhysicsReplicationLODAsync InPhysicsReplicationLOD)
inline

◆ SetRewindCallback()

void Chaos::FPhysicsSolverBase::SetRewindCallback ( TUniquePtr< IRewindCallback > &&  RewindCallback)

◆ SetSolverSubstep_External()

void Chaos::FPhysicsSolverBase::SetSolverSubstep_External ( bool  bInSubstepExternal)
inline

◆ SetSolverTime()

void Chaos::FPhysicsSolverBase::SetSolverTime ( const FReal  InTime)
inline

◆ SetStandaloneSolver()

void Chaos::FPhysicsSolverBase::SetStandaloneSolver ( const bool  bStandaloneSolver)
inline

Set the standalone solver flag

◆ SetStealAdvanceTasks_ForTesting()

void Chaos::FPhysicsSolverBase::SetStealAdvanceTasks_ForTesting ( bool  bInStealAdvanceTasksForTesting)

◆ SetThreadingMode_External()

void Chaos::FPhysicsSolverBase::SetThreadingMode_External ( EThreadingModeTemp  InThreadingMode)
inline

◆ SetUseCollisionResimCache()

void Chaos::FPhysicsSolverBase::SetUseCollisionResimCache ( bool  InUseCollisionResimCache)
inline

Enable or disable an additional resim cache based on IResimCacheBase (FEvolutionResimCache by default) that also caches particle collision constraints this is disabled by default since cached collisions will be wrong during a resimulation for particles that are desynced and particles that are in sync doesn't need collision data since we just step through their states in history."

◆ ShouldApplyRewindCallbacks()

bool Chaos::FPhysicsSolverBase::ShouldApplyRewindCallbacks ( )
inline

◆ TrackGTParticle_External()

void Chaos::FPhysicsSolverBase::TrackGTParticle_External ( FGeometryParticle Particle)
protected

◆ UniqueIdxToGTParticle_External()

FGeometryParticle * Chaos::FPhysicsSolverBase::UniqueIdxToGTParticle_External ( const FUniqueIdx UniqueIdx) const
inline

◆ UnregisterAndFreeSimCallbackObject_External()

void Chaos::FPhysicsSolverBase::UnregisterAndFreeSimCallbackObject_External ( ISimCallbackObject SimCallbackObject)
inline

◆ UpdateParticleInAccelerationStructure_External()

void Chaos::FPhysicsSolverBase::UpdateParticleInAccelerationStructure_External ( FGeometryParticle Particle,
EPendingSpatialDataOperation  InOperation 
)

◆ WaitOnPendingTasks_External()

void Chaos::FPhysicsSolverBase::WaitOnPendingTasks_External ( )
inline

Friends And Related Symbol Documentation

◆ TSolverSimMaterialScope

Member Data Documentation

◆ bGameThreadFrozen

bool Chaos::FPhysicsSolverBase::bGameThreadFrozen = false
protected

◆ bIsStandaloneSolver

bool Chaos::FPhysicsSolverBase::bIsStandaloneSolver = false
protected

Boolean to check if the solver is a standalone solver responsible to spawn its own task

◆ bSolverHasFrozenGameThreadCallbacks

bool Chaos::FPhysicsSolverBase::bSolverHasFrozenGameThreadCallbacks = false
protected

◆ BufferMode

EMultiBufferMode Chaos::FPhysicsSolverBase::BufferMode
protected

Mode that the results buffers should be set to (single, double, triple)

◆ bUseCollisionResimCache

bool Chaos::FPhysicsSolverBase::bUseCollisionResimCache
protected

◆ CCDModifiers

TArray<ISimCallbackObject*> Chaos::FPhysicsSolverBase::CCDModifiers
protected

◆ ContactModifiers

TArray<ISimCallbackObject*> Chaos::FPhysicsSolverBase::ContactModifiers
protected

◆ MarshallingManager

FChaosMarshallingManager Chaos::FPhysicsSolverBase::MarshallingManager
protected

◆ MidPhaseModifiers

TArray<ISimCallbackObject*> Chaos::FPhysicsSolverBase::MidPhaseModifiers
protected

◆ MLastDt

FReal Chaos::FPhysicsSolverBase::MLastDt = FReal(0)
protected

◆ MRewindCallback

TUniquePtr<IRewindCallback> Chaos::FPhysicsSolverBase::MRewindCallback
protected

◆ MRewindData

TUniquePtr<FRewindData> Chaos::FPhysicsSolverBase::MRewindData
protected

◆ MTime

FReal Chaos::FPhysicsSolverBase::MTime = FReal(0)
protected

◆ PendingSpatialOperations_External

TUniquePtr<FPendingSpatialDataQueue> Chaos::FPhysicsSolverBase::PendingSpatialOperations_External
protected

◆ PendingTasks

FGraphEventRef Chaos::FPhysicsSolverBase::PendingTasks
protected

◆ PhysicsObjectUnregistrationWatchers

TArray<ISimCallbackObject*> Chaos::FPhysicsSolverBase::PhysicsObjectUnregistrationWatchers
protected

◆ PhysicsReplication_DEPRECATED

FPhysicsReplicationAsync* Chaos::FPhysicsSolverBase::PhysicsReplication_DEPRECATED
protected

◆ PhysicsReplicationAsync

IPhysicsReplicationAsync* Chaos::FPhysicsSolverBase::PhysicsReplicationAsync
protected

◆ PhysicsReplicationLODAsync

IPhysicsReplicationLODAsync* Chaos::FPhysicsSolverBase::PhysicsReplicationLODAsync
protected

◆ PullResultsManager

TUniquePtr<FChaosResultsManager> Chaos::FPhysicsSolverBase::PullResultsManager
protected

◆ RegistrationWatchers

TArray<ISimCallbackObject*> Chaos::FPhysicsSolverBase::RegistrationWatchers
protected

◆ SimCallbackObjects

TArray<ISimCallbackObject*> Chaos::FPhysicsSolverBase::SimCallbackObjects
protected

◆ StrainModifiers

TArray<ISimCallbackObject*> Chaos::FPhysicsSolverBase::StrainModifiers
protected

◆ ThreadingMode

EThreadingModeTemp Chaos::FPhysicsSolverBase::ThreadingMode
protected

◆ UnregistrationWatchers

TArray<ISimCallbackObject*> Chaos::FPhysicsSolverBase::UnregistrationWatchers
protected

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