27 class FPhysicsSolverBase;
60template <
typename TPropertyType>
109 template<
class SOLVER_TYPE>
115 template<
class SOLVER_TYPE = Chaos::FPhysicsSolver>
151 UE_DEPRECATED(5.5,
"Deprecated, use RenderInterpolationCVars::RenderInterpErrorCorrectionDuration")
156 UE_DEPRECATED(5.5,
"Deprecated, use RenderInterpolationCVars::RenderInterpMaximumErrorCorrectionBeforeSnapping")
161 UE_DEPRECATED(5.5,
"Deprecated, use RenderInterpolationCVars::RenderInterpErrorVelocitySmoothingDuration")
166 UE_DEPRECATED(5.5,
"Deprecated, use RenderInterpolationCVars::bRenderInterpDebugDraw")
171 UE_DEPRECATED(5.5,
"Deprecated, use RenderInterpolationCVars::RenderInterpErrorDirectionalDecayMultiplier")
182 template<
typename TProxyTimeStamp>
300 UE_DEPRECATED(5.6,
"Deprecated, use DirectionalDecay(Direction, ErrorDirectionalDecayMultiplier) instead")
352 ErrorX = Chaos::FVec3::ZeroVector;
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define FORCEINLINE_DEBUGGABLE
Definition CoreMiscDefines.h:74
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
EProxyInterpolationType
Definition PhysicsProxyBase.h:49
EPhysicsProxyType
Definition PhysicsProxyBase.h:11
@ SuspensionConstraintType
@ CharacterGroundConstraintType
Definition PhysicsSolverBase.h:313
Definition PhysicsProxyBase.h:97
virtual CHAOS_API ~IPhysicsProxyBase()
Definition PhysicsProxyBase.cpp:51
Chaos::FPhysicsSolverBase * GetSolverBase() const
Definition PhysicsProxyBase.h:112
void ResetDirtyIdx()
Definition PhysicsProxyBase.h:125
void SetDirtyIdx(const int32 Idx)
Definition PhysicsProxyBase.h:124
FORCEINLINE_DEBUGGABLE TProxyTimeStamp & GetSyncTimestampAs()
Definition PhysicsProxyBase.h:183
int32 GetInitializedStep() const
Definition PhysicsProxyBase.h:143
void SetInitialized(const int32 InitializeStep)
Definition PhysicsProxyBase.h:133
void SetParentProxy(IPhysicsProxyBase *InProxy)
Definition PhysicsProxyBase.h:148
int32 IgnoreDataOnStep_Internal
Definition PhysicsProxyBase.h:202
CHAOS_API int32 GetSolverSyncTimestamp_External() const
Definition PhysicsProxyBase.cpp:60
IPhysicsProxyBase * GetParentProxy() const
Definition PhysicsProxyBase.h:147
bool IsInitialized() const
Definition PhysicsProxyBase.h:132
virtual void * GetHandleUnsafe() const
Definition PhysicsProxyBase.h:121
EPhysicsProxyType GetType() const
Definition PhysicsProxyBase.h:118
UObject * Owner
Definition PhysicsProxyBase.h:190
void MarkDeleted()
Definition PhysicsProxyBase.h:127
static float GetRenderInterpErrorCorrectionDuration()
Definition PhysicsProxyBase.h:152
static float GetRenderInterpErrorDirectionalDecayMultiplier()
Definition PhysicsProxyBase.h:172
static float GetRenderInterpMaximumErrorCorrectionBeforeSnapping()
Definition PhysicsProxyBase.h:157
int32 InitializedOnStep
Definition PhysicsProxyBase.h:201
static float GetRenderInterpErrorVelocitySmoothingDuration()
Definition PhysicsProxyBase.h:162
void SetSolver(SOLVER_TYPE *InSolver)
Definition PhysicsProxyBase.h:116
EPhysicsProxyType Type
Definition PhysicsProxyBase.h:196
SOLVER_TYPE * GetSolver() const
Definition PhysicsProxyBase.h:110
Chaos::FPhysicsSolverBase * Solver
Definition PhysicsProxyBase.h:189
int32 GetIgnoreDataOnStep_Internal() const
Definition PhysicsProxyBase.h:145
bool GetMarkedDeleted() const
Definition PhysicsProxyBase.h:128
UObject * GetOwner() const
Definition PhysicsProxyBase.h:107
TSharedPtr< FProxyTimestampBase, ESPMode::ThreadSafe > GetSyncTimestamp() const
Definition PhysicsProxyBase.h:130
static bool GetRenderInterpDebugDraw()
Definition PhysicsProxyBase.h:167
int32 GetDirtyIdx() const
Definition PhysicsProxyBase.h:123
IPhysicsProxyBase(EPhysicsProxyType InType, UObject *InOwner, TSharedPtr< FProxyTimestampBase, ESPMode::ThreadSafe > InProxyTimeStamp)
Definition PhysicsProxyBase.h:99
Definition SharedPointer.h:692
Definition UniquePtr.h:107
bool IsValid() const
Definition UniquePtr.h:280
UE_FORCEINLINE_HINT T * Get() const
Definition UniquePtr.h:324
Definition SkeletalMeshComponent.h:307
FRealDouble FReal
Definition Real.h:22
float FRealSingle
Definition Real.h:14
Definition PhysicsReplication.cpp:82
float RenderInterpExponentialDecayAngularHalfLife
Definition PhysicsProxyBase.cpp:41
float RenderInterpErrorVelocitySmoothingDuration
Definition PhysicsProxyBase.cpp:17
bool bRenderInterpApplyExponentialDecay
Definition PhysicsProxyBase.cpp:35
float RenderInterpErrorDirectionalDecayMultiplier
Definition PhysicsProxyBase.cpp:20
float RenderInterpErrorCorrectionDuration
Definition PhysicsProxyBase.cpp:8
float RenderInterpMaximumErrorCorrectionBeforeSnapping
Definition PhysicsProxyBase.cpp:11
float RenderInterpDebugDrawZOffset
Definition PhysicsProxyBase.cpp:32
bool bRenderInterpDebugDraw
Definition PhysicsProxyBase.cpp:26
float RenderInterpMinimumAngularThreshold
Definition PhysicsProxyBase.cpp:47
float RenderInterpMinimumLinearThreshold
Definition PhysicsProxyBase.cpp:44
bool bRenderInterpErrorVelocityCorrection
Definition PhysicsProxyBase.cpp:23
float RenderInterpExponentialDecayLinearHalfLife
Definition PhysicsProxyBase.cpp:38
bool bRenderInterpDebugDrawGC
Definition PhysicsProxyBase.cpp:29
float RenderInterpMaximumErrorCorrectionDesyncTimeBeforeSnapping
Definition PhysicsProxyBase.cpp:14
@ false
Definition radaudio_common.h:23
Definition PhysicsProxyBase.h:89
TTimestampProperty< Chaos::FVec3 > OverWriteW
Definition PhysicsProxyBase.h:93
TTimestampProperty< Chaos::FRotation3 > OverWriteR
Definition PhysicsProxyBase.h:91
TTimestampProperty< Chaos::FVec3 > OverWriteX
Definition PhysicsProxyBase.h:90
TTimestampProperty< Chaos::FVec3 > OverWriteV
Definition PhysicsProxyBase.h:92
Definition PhysicsProxyBase.h:214
float ErrorDirectionalDecayMultiplier
Definition PhysicsProxyBase.h:239
bool bApplyExponentialDecay
Definition PhysicsProxyBase.h:242
float ErrorCorrectionDuration
Definition PhysicsProxyBase.h:229
float ExponentialDecayLinearHalfLife
Definition PhysicsProxyBase.h:245
float MaximumErrorCorrectionBeforeSnapping
Definition PhysicsProxyBase.h:232
~FErrorInterpolationSettings()
Definition PhysicsProxyBase.h:226
float ExponentialDecayAngularHalfLife
Definition PhysicsProxyBase.h:248
float MaximumErrorCorrectionDesyncTimeBeforeSnapping
Definition PhysicsProxyBase.h:236
FErrorInterpolationSettings()
Definition PhysicsProxyBase.h:215
float MinimumLinearThreshold
Definition PhysicsProxyBase.h:251
float MinimumAngularThreshold
Definition PhysicsProxyBase.h:254
Definition PhysicsProxyBase.h:83
static constexpr UE_FORCEINLINE_HINT T Lerp(const T &A, const T &B, const U &Alpha)
Definition UnrealMathUtility.h:1116
Definition PhysicsProxyBase.h:258
int32 PullDataInterpIdx_External
Definition PhysicsProxyBase.h:272
virtual const Chaos::FRealSingle GetErrorVelocitySmoothingAlpha(const int32 ErrorVelocitySmoothDuration) const
Definition PhysicsProxyBase.h:311
virtual void AccumlateErrorXR(const Chaos::FVec3 X, const FQuat R, const int32 CurrentSimTick, const int32 ErrorSmoothDuration)
Definition PhysicsProxyBase.h:294
FProxyInterpolationBase(const int32 PullDataInterpIdx=INDEX_NONE, const int32 InterpChannel=0)
Definition PhysicsProxyBase.h:259
void SetInterpChannel_External(const int32 Channel)
Definition PhysicsProxyBase.h:269
virtual const Chaos::FVec3 GetErrorVelocitySmoothingX(const Chaos::FRealSingle Alpha) const
Definition PhysicsProxyBase.h:314
virtual const bool DirectionalDecay(Chaos::FVec3 Direction, const float ErrorDirectionalDecayMultiplier)
Definition PhysicsProxyBase.h:305
virtual FErrorInterpolationSettings * GetErrorInterpolationSettings()
Definition PhysicsProxyBase.h:320
int32 GetInterpChannel_External() const
Definition PhysicsProxyBase.h:268
virtual const bool IsErrorSmoothing() const
Definition PhysicsProxyBase.h:285
void SetPullDataInterpIdx_External(const int32 Idx)
Definition PhysicsProxyBase.h:266
virtual const bool DirectionalDecay(Chaos::FVec3 Direction)
Definition PhysicsProxyBase.h:301
int32 InterpChannel_External
Definition PhysicsProxyBase.h:273
virtual const FQuat GetErrorR(const Chaos::FRealSingle Alpha) const
Definition PhysicsProxyBase.h:291
static const EProxyInterpolationType InterpolationType
Definition PhysicsProxyBase.h:279
virtual const EProxyInterpolationType GetInterpolationType() const
Definition PhysicsProxyBase.h:282
virtual const bool IsErrorVelocitySmoothing() const
Definition PhysicsProxyBase.h:308
virtual ~FProxyInterpolationBase()
Definition PhysicsProxyBase.h:263
int32 GetPullDataInterpIdx_External() const
Definition PhysicsProxyBase.h:265
virtual const bool UpdateError(const int32 CurrentSimTick, const Chaos::FReal AsyncFixedTimeStep)
Definition PhysicsProxyBase.h:297
virtual const Chaos::FVec3 GetErrorX(const Chaos::FRealSingle Alpha) const
Definition PhysicsProxyBase.h:288
virtual void SetVelocitySmoothing(const Chaos::FVec3 CurrV, const Chaos::FVec3 CurrX, const int32 ErrorVelocitySmoothDuration)
Definition PhysicsProxyBase.h:317
Definition PhysicsProxyBase.h:394
Chaos::FVec3 ErrorVelocitySmoothingXPrev
Definition PhysicsProxyBase.h:443
int32 ErrorVelocitySmoothingCount
Definition PhysicsProxyBase.h:444
static const EProxyInterpolationType InterpolationType
Definition PhysicsProxyBase.h:401
FProxyInterpolationErrorVelocity(const int32 PullDataInterpIdx=INDEX_NONE, const int32 InterpChannel=0)
Definition PhysicsProxyBase.h:397
virtual void SetVelocitySmoothing(const Chaos::FVec3 CurrV, const Chaos::FVec3 CurrX, const int32 ErrorVelocitySmoothDuration) override
Definition PhysicsProxyBase.h:418
virtual const Chaos::FRealSingle GetErrorVelocitySmoothingAlpha(const int32 ErrorVelocitySmoothDuration) const override
Definition PhysicsProxyBase.h:405
Chaos::FVec3 ErrorVelocitySmoothingX
Definition PhysicsProxyBase.h:442
virtual void StepErrorVelocitySmoothingData(const Chaos::FReal AsyncFixedTimeStep)
Definition PhysicsProxyBase.h:428
virtual ~FProxyInterpolationErrorVelocity()
Definition PhysicsProxyBase.h:399
Chaos::FVec3 ErrorVelocitySmoothingV
Definition PhysicsProxyBase.h:441
virtual const Chaos::FVec3 GetErrorVelocitySmoothingX(const Chaos::FRealSingle Alpha) const override
Definition PhysicsProxyBase.h:406
virtual const EProxyInterpolationType GetInterpolationType() const override
Definition PhysicsProxyBase.h:402
virtual const bool IsErrorVelocitySmoothing() const override
Definition PhysicsProxyBase.h:404
virtual const bool UpdateError(const int32 CurrentSimTick, const Chaos::FReal AsyncFixedTimeStep) override
Definition PhysicsProxyBase.h:408
Definition PhysicsProxyBase.h:325
int32 EndDecayTick
Definition PhysicsProxyBase.h:381
virtual CHAOS_API const bool DirectionalDecay(Chaos::FVec3 Direction, float ErrorDirectionalDecayMultiplier) override
Definition PhysicsProxyBase.cpp:116
FProxyInterpolationError(const int32 PullDataInterpIdx=INDEX_NONE, const int32 InterpChannel=0)
Definition PhysicsProxyBase.h:328
virtual CHAOS_API const bool UpdateError(const int32 CurrentSimTick, const Chaos::FReal AsyncFixedTimeStep) override
Definition PhysicsProxyBase.cpp:103
virtual ~FProxyInterpolationError()
Definition PhysicsProxyBase.h:330
TUniquePtr< FErrorInterpolationSettings > ErrorInterpolationSettings
Definition PhysicsProxyBase.h:388
virtual CHAOS_API const bool DecayError(const Chaos::FReal AsyncFixedTimeStep)
Definition PhysicsProxyBase.cpp:145
virtual FErrorInterpolationSettings * GetErrorInterpolationSettings() override
Definition PhysicsProxyBase.h:373
Chaos::FVec3 ErrorXPrev
Definition PhysicsProxyBase.h:384
FQuat ErrorRPrev
Definition PhysicsProxyBase.h:386
int32 SimTicks
Definition PhysicsProxyBase.h:380
static const EProxyInterpolationType InterpolationType
Definition PhysicsProxyBase.h:332
virtual void Reset()
Definition PhysicsProxyBase.h:350
virtual const EProxyInterpolationType GetInterpolationType() const override
Definition PhysicsProxyBase.h:333
virtual const Chaos::FVec3 GetErrorX(const Chaos::FRealSingle Alpha) const override
Definition PhysicsProxyBase.h:337
virtual CHAOS_API const bool IsErrorSmoothing() const override
Definition PhysicsProxyBase.cpp:70
int32 LastSimTick
Definition PhysicsProxyBase.h:379
Chaos::FVec3 ErrorX
Definition PhysicsProxyBase.h:383
FQuat ErrorR
Definition PhysicsProxyBase.h:385
virtual CHAOS_API void AccumlateErrorXR(const Chaos::FVec3 X, const FQuat R, const int32 CurrentSimTick, const int32 ErrorSmoothDuration) override
Definition PhysicsProxyBase.cpp:85
virtual const FQuat GetErrorR(const Chaos::FRealSingle Alpha) const override
Definition PhysicsProxyBase.h:339
FErrorInterpolationSettings & GetOrCreateErrorInterpolationSettings()
Definition PhysicsProxyBase.h:363
Definition PhysicsProxyBase.h:56
bool bDeleted
Definition PhysicsProxyBase.h:57
Definition PhysicsProxyBase.h:74
TTimestampProperty< Chaos::FRotation3 > OverWriteR
Definition PhysicsProxyBase.h:77
TTimestampProperty< Chaos::FVec3 > OverWriteX
Definition PhysicsProxyBase.h:76
int32 ObjectStateTimestamp
Definition PhysicsProxyBase.h:75
TTimestampProperty< Chaos::FVec3 > OverWriteW
Definition PhysicsProxyBase.h:79
TTimestampProperty< Chaos::FVec3 > OverWriteV
Definition PhysicsProxyBase.h:78
Definition PhysicsProxyBase.h:208
EPhysicsProxyType Type
Definition PhysicsProxyBase.h:210
IPhysicsProxyBase * PhysicsProxy
Definition PhysicsProxyBase.h:209
Definition PhysicsProxyBase.h:62
TPropertyType Value
Definition PhysicsProxyBase.h:69
FORCEINLINE_DEBUGGABLE void Set(int32 InTimestamp, const TPropertyType &InValue)
Definition PhysicsProxyBase.h:63
int32 Timestamp
Definition PhysicsProxyBase.h:70
static UE_FORCEINLINE_HINT TQuat< double > Slerp(const TQuat< double > &Quat1, const TQuat< double > &Quat2, double Slerp)
Definition Quat.h:660
static CORE_API const TQuat< double > Identity
Definition Quat.h:63