21#ifndef CHAOS_WITH_PAUSABLE_SOLVER
22#define CHAOS_WITH_PAUSABLE_SOLVER 1
28class UPrimitiveComponent;
31class AdvanceOneTimeStepTask;
57 class FClusterUnionPhysicsProxy;
59 struct FCollisionEventData;
63 template<
typename PayloadType,
typename HandlerType>
64 class TRawEventHandler;
66 class FAccelerationStructureHandle;
68 template <
typename TPayload,
typename T,
int d>
69 class ISpatialAcceleration;
71 template <
typename TPayload,
typename T,
int d>
72 class ISpatialAccelerationCollection;
75 class TArrayCollectionArray;
77 struct FSerializedDataBuffer;
185 template<
class OwnerType>
189 auto*
CompPtr = PhysicsProxyToComponentMap.Find(PhysicsProxy);
200 return ComponentToPhysicsProxyMap.Find(
Comp);
288 UE_DEPRECATED(5.5,
"Deprecated, ReplicationCache has been moved to FPhysicsReplicationCache and it's getting populated automatically. Use GetStateFromReplicationCache() and RegisterForReplicationCache() to use the replication cache. ")
297 return PhysicsReplicationCache.
Get();
303 struct UE_DEPRECATED(5.5,
"Deprecated, ReplicationCache has been moved to FPhysicsReplicationCache")
317 UPrimitiveComponent* GetRootComponent() {
return RootComponent.Get(); }
334 struct UE_DEPRECATED(5.5,
"Deprecated, ReplicationCache has been moved to FPhysicsReplicationCache")
347 int32 ServerFrame = 0;
369 struct FUniqueContactPairKey
374 friend bool operator==(
const FUniqueContactPairKey& Lhs,
const FUniqueContactPairKey& Rhs)
376 return Lhs.Body0 ==
Rhs.Body0 && Lhs.Body1 ==
Rhs.Body1;
396 ENGINE_API void DispatchPendingCollisionNotifies();
408#if CHAOS_WITH_PAUSABLE_SOLVER
420 ENGINE_API void EnableAsyncPhysicsTickCallback();
457 ENGINE_API void UpdateKinematicsOnDeferredSkelMeshes();
460 struct FDeferredKinematicUpdateInfo
477 mutable FRWLock PhysicsProxyComponentMapsLock;
480 mutable FRWLock CollisionEventRegistrationsLock;
512#if CHAOS_WITH_PAUSABLE_SOLVER
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define UE_CHAOS_ASYNC_INITBODY_READSCOPELOCK(x)
Definition AsyncInitBodyHelper.h:66
#define CHAOS_SOLVER_DEBUG_NAME
Definition ChaosDebugNameDefines.h:10
#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
ETeleportType
Definition EngineTypes.h:2401
ESleepEvent
Definition EngineTypes.h:1711
UE_FORCEINLINE_HINT uint64 GetState() const
Definition LockFreeList.h:46
int32 GEnableKinematicDeferralStartPhysicsCondition
Definition PhysScene_Chaos.cpp:69
Definition ClusterUnionPhysicsProxy.h:63
Definition PhysicsSolverBase.h:313
Definition SingleParticlePhysicsProxy.h:58
Definition ISpatialAccelerationCollection.h:23
Definition PhysScene_Chaos.cpp:145
Definition ChaosScene.h:88
Definition ChaosSolversModule.h:146
Definition GeometryCollectionPhysicsProxy.h:143
Definition NameTypes.h:617
Definition OutputDevice.h:133
Definition PerSolverFieldSystem.h:11
Definition PhysInterface_Chaos.h:35
Definition PhysScene_Chaos.h:116
ENGINE_API int32 GetNumAwakeBodies() const
Definition PhysScene_Chaos.cpp:2214
FOnPhysScenePreTick OnPhysScenePreTick
Definition PhysScene_Chaos.h:260
ENGINE_API const FRigidBodyState * GetStateFromReplicationCache(UPrimitiveComponent *RootComponent, int &ServerFrame)
Definition PhysScene_Chaos.cpp:1408
FPhysicsReplicationCache * GetPhysicsReplicationCache()
Definition PhysScene_Chaos.h:292
ENGINE_API IPhysicsReplicationLOD * CreatePhysicsReplicationLOD()
Definition PhysScene_Chaos.cpp:895
Chaos::FSerializedDataBufferPtr PopPendingSerializedStateForObject(UObject *InComponent)
Definition PhysScene_Chaos.cpp:853
static ENGINE_API bool SupportsAsyncPhysicsStateCreation()
Definition PhysScene_Chaos.cpp:1822
ENGINE_API bool HasAsyncScene() const
Definition PhysScene_Chaos.cpp:2235
ENGINE_API IPhysicsReplicationLOD * GetPhysicsReplicationLOD()
Definition PhysScene_Chaos.cpp:890
ENGINE_API void AddForceAtPosition_AssumesLocked(FBodyInstance *BodyInstance, const FVector &Force, const FVector &Position, bool bAllowSubstepping, bool bIsLocalForce=false)
Definition PhysScene_Chaos.cpp:1570
ENGINE_API FBodyInstance * GetBodyInstanceFromProxy(const IPhysicsProxyBase *PhysicsProxy) const
Definition PhysScene_Chaos.cpp:937
ENGINE_API void ClearPreSimKinematicUpdate(USkeletalMeshComponent *InSkelComp)
Definition PhysScene_Chaos.cpp:1662
ENGINE_API bool HandleExecCommands(const TCHAR *Cmd, FOutputDevice *Ar)
Definition PhysScene_Chaos.cpp:2204
ENGINE_API bool ExecApexVis(uint32 SceneType, const TCHAR *Cmd, FOutputDevice *Ar)
Definition PhysUtils.cpp:335
ENGINE_API IPhysicsReplication * GetPhysicsReplication()
Definition PhysScene_Chaos.cpp:866
ENGINE_API void RemoveDeferredPhysicsStateCreation(UPrimitiveComponent *Component)
Definition PhysScene_Chaos.cpp:1774
ENGINE_API void AddPendingSleepingEvent(FBodyInstance *BI, ESleepEvent SleepEventType, int32 SceneType)
Definition PhysScene_Chaos.cpp:2137
ENGINE_API void RegisterAsyncPhysicsTickComponent(UActorComponent *Component)
Definition PhysScene_Chaos.cpp:2677
ENGINE_API void ProcessDeferredCreatePhysicsState()
Definition PhysScene_Chaos.cpp:1780
ENGINE_API void UnRegisterForGlobalCollisionEvents(UPrimitiveComponent *Component)
Definition PhysScene_Chaos.cpp:669
ENGINE_API void RegisterForReplicationCache(UPrimitiveComponent *RootComponent)
Definition PhysScene_Chaos.cpp:1416
ENGINE_API void EnqueueAsyncPhysicsCommand(int32 PhysicsStep, UObject *OwningObject, const TFunction< void()> &Command, const bool bEnableResim=false)
Definition PhysScene_Chaos.cpp:2717
ENGINE_API void RegisterForGlobalRemovalEvents(UPrimitiveComponent *Component)
Definition PhysScene_Chaos.cpp:674
ENGINE_API void SetKinematicTarget_AssumesLocked(FBodyInstance *BodyInstance, const FTransform &TargetTM, bool bAllowSubstepping)
Definition PhysScene_Chaos.cpp:1603
ENGINE_API void UnRegisterForGlobalRemovalEvents(UPrimitiveComponent *Component)
Definition PhysScene_Chaos.cpp:679
ENGINE_API void RemoveAsyncPhysicsStateJobs(IAsyncPhysicsStateProcessor *Processor)
Definition PhysScene_Chaos.cpp:1868
DECLARE_MULTICAST_DELEGATE_TwoParams(FOnPhysScenePreTick, FPhysScene_Chaos *, float)
ENGINE_API void AddObject(UPrimitiveComponent *Component, FSkeletalMeshPhysicsProxy *InObject)
Definition PhysScene_Chaos.cpp:690
ENGINE_API void EnsureCollisionTreeIsBuilt(UWorld *World)
Definition PhysScene_Chaos.cpp:2245
ENGINE_API void UnregisterAsyncPhysicsTickComponent(UActorComponent *Component)
Definition PhysScene_Chaos.cpp:2683
ENGINE_API bool ExecPxVis(uint32 SceneType, const TCHAR *Cmd, FOutputDevice *Ar)
Definition PhysUtils.cpp:330
ENGINE_API bool PushAsyncCreatePhysicsStateJob(IAsyncPhysicsStateProcessor *Processor)
Definition PhysScene_Chaos.cpp:1832
ENGINE_API void KillVisualDebugger()
Definition PhysScene_Chaos.cpp:2250
ENGINE_API void RegisterForCollisionEvents(UPrimitiveComponent *Component)
Definition PhysScene_Chaos.cpp:652
DECLARE_MULTICAST_DELEGATE_TwoParams(FOnPhysSceneStep, FPhysScene_Chaos *, float)
ENGINE_API void AddRadialForceToBody_AssumesLocked(FBodyInstance *BodyInstance, const FVector &Origin, const float Radius, const float Strength, const uint8 Falloff, bool bAccelChange, bool bAllowSubstepping)
Definition PhysScene_Chaos.cpp:1575
ENGINE_API bool GetKinematicTarget_AssumesLocked(const FBodyInstance *BodyInstance, FTransform &OutTM) const
Definition PhysScene_Chaos.cpp:1610
ENGINE_API TArray< FCollisionNotifyInfo > & GetPendingCollisionNotifies(int32 SceneType)
Definition PhysScene_Chaos.cpp:2142
UE_DEPRECATED(5.5, "Deprecated, ReplicationCache has been moved to FPhysicsReplicationCache and it's getting populated automatically. Use GetStateFromReplicationCache() and RegisterForReplicationCache() to use the replication cache. ") void PopulateReplicationCache(const int32 PhysicsStep)
Definition PhysScene_Chaos.h:288
ENGINE_API void DeferPhysicsStateCreation(UPrimitiveComponent *Component)
Definition PhysScene_Chaos.cpp:1761
ENGINE_API IPhysicsReplication * CreatePhysicsReplication()
Definition PhysScene_Chaos.cpp:871
ENGINE_API AActor * GetSolverActor() const
Definition PhysScene_Chaos.cpp:647
ENGINE_API int32 DirtyElementCount(Chaos::ISpatialAccelerationCollection< Chaos::FAccelerationStructureHandle, Chaos::FReal, 3 > &Collection)
ENGINE_API void ListAwakeRigidBodies(bool bIncludeKinematic)
Definition PhysScene_Chaos.cpp:2209
ENGINE_API void ProcessAsyncPhysicsStateJobs(bool bWaitForCompletion=false)
Definition PhysScene_Chaos.cpp:1878
ENGINE_API void UnregisterAsyncPhysicsTickActor(AActor *Actor)
Definition PhysScene_Chaos.cpp:2704
virtual ENGINE_API ~FPhysScene_Chaos()
Definition PhysScene_Chaos.cpp:599
virtual ENGINE_API void AddReferencedObjects(FReferenceCollector &Collector) override
Definition PhysScene_Chaos.cpp:913
OwnerType * GetOwningComponent(const IPhysicsProxyBase *PhysicsProxy) const
Definition PhysScene_Chaos.h:186
ENGINE_API void UnRegisterForCollisionEvents(UPrimitiveComponent *Component)
Definition PhysScene_Chaos.cpp:658
UChaosEventRelay * GetChaosEventRelay() const
Definition PhysScene_Chaos.h:280
ENGINE_API void AddForce_AssumesLocked(FBodyInstance *BodyInstance, const FVector &Force, bool bAllowSubstepping, bool bAccelChange)
Definition PhysScene_Chaos.cpp:1565
ENGINE_API void RemoveBodyInstanceFromPendingLists_AssumesLocked(FBodyInstance *BodyInstance, int32 SceneType)
Definition PhysScene_Chaos.cpp:1555
ENGINE_API void RegisterAsyncPhysicsTickActor(AActor *Actor)
Definition PhysScene_Chaos.cpp:2691
ENGINE_API void RegisterForGlobalCollisionEvents(UPrimitiveComponent *Component)
Definition PhysScene_Chaos.cpp:664
ENGINE_API void OnWorldBeginPlay()
Definition PhysScene_Chaos.cpp:1455
static ENGINE_API Chaos::FCollisionModifierCallback CollisionModifierCallback
Definition PhysScene_Chaos.h:267
ENGINE_API UPrimitiveComponent * GetOwningComponent(const IPhysicsProxyBase *PhysicsProxy) const
ENGINE_API void AddTorque_AssumesLocked(FBodyInstance *BodyInstance, const FVector &Torque, bool bAllowSubstepping, bool bAccelChange)
Definition PhysScene_Chaos.cpp:1589
ENGINE_API void OnWorldEndPlay()
Definition PhysScene_Chaos.cpp:1485
static ENGINE_API bool SupportsOriginShifting()
Definition PhysScene_Chaos.cpp:2147
ENGINE_API void AddCustomPhysics_AssumesLocked(FBodyInstance *BodyInstance, FCalculateCustomPhysics &CalculateCustomPhysics)
Definition PhysScene_Chaos.cpp:1560
ENGINE_API void AddPendingOnConstraintBreak(FConstraintInstance *ConstraintInstance, int32 SceneType)
Definition PhysScene_Chaos.cpp:2132
ENGINE_API void ResimNFrames(int32 NumFrames)
Definition PhysScene_Chaos.cpp:2619
ENGINE_API void CreatePhysicsReplicationCache()
Definition PhysScene_Chaos.cpp:1424
ENGINE_API void AddAggregateToScene(const FPhysicsAggregateHandle &InAggregate)
Definition PhysScene_Chaos.cpp:1527
ENGINE_API const FBodyInstance * GetBodyInstanceFromProxyAndShape(IPhysicsProxyBase *InProxy, int32 InShapeIndex) const
Definition PhysScene_Chaos.cpp:959
ENGINE_API void ClearForces_AssumesLocked(FBodyInstance *BodyInstance, bool bAllowSubstepping)
Definition PhysScene_Chaos.cpp:1580
ENGINE_API void RemoveFromComponentMaps(IPhysicsProxyBase *InObject)
Definition PhysScene_Chaos.cpp:1433
ENGINE_API void SetPhysXTreeRebuildRate(int32 RebuildRate)
Definition PhysScene_Chaos.cpp:2240
static ENGINE_API bool SupportsAsyncPhysicsStateDestruction()
Definition PhysScene_Chaos.cpp:1827
ENGINE_API void ApplyWorldOffset(FVector InOffset)
Definition PhysScene_Chaos.cpp:2152
static ENGINE_API TSharedPtr< IPhysicsReplicationFactory > PhysicsReplicationFactory
Definition PhysScene_Chaos.h:251
void PushPendingSerializedStateForObject(UObject *InComponent, Chaos::FSerializedDataBufferPtr &&InState)
Definition PhysScene_Chaos.cpp:845
ENGINE_API UWorld * GetOwningWorld()
Definition PhysScene_Chaos.cpp:1545
ENGINE_API void ClearTorques_AssumesLocked(FBodyInstance *BodyInstance, bool bAllowSubstepping)
Definition PhysScene_Chaos.cpp:1594
ENGINE_API void AddToComponentMaps(UPrimitiveComponent *Component, IPhysicsProxyBase *InObject)
Definition PhysScene_Chaos.cpp:1378
ENGINE_API void SetOwningWorld(UWorld *InOwningWorld)
Definition PhysScene_Chaos.cpp:1532
virtual ENGINE_API float OnStartFrame(float InDeltaTime) override
Definition PhysScene_Chaos.cpp:2157
FOnPhysSceneStep OnPhysSceneStep
Definition PhysScene_Chaos.h:262
ENGINE_API bool MarkForPreSimKinematicUpdate(USkeletalMeshComponent *InSkelComp, ETeleportType InTeleport, bool bNeedsSkinning)
Definition PhysScene_Chaos.cpp:1617
const TArray< IPhysicsProxyBase * > * GetOwnedPhysicsProxies(UPrimitiveComponent *Comp) const
Definition PhysScene_Chaos.h:197
ENGINE_API void StartAsync()
Definition PhysScene_Chaos.cpp:2230
ENGINE_API bool PushAsyncDestroyPhysicsStateJob(IAsyncPhysicsStateProcessor *Processor)
Definition PhysScene_Chaos.cpp:1851
Definition ChaosEngineInterface.h:241
Definition ChaosEngineInterface.h:247
Definition PhysicsReplicationCache.h:19
Definition UObjectGlobals.h:2492
Definition SkeletalMeshPhysicsProxy.h:117
Definition StaticMeshPhysicsProxy.h:28
Definition AsyncPhysicsStateProcessorInterface.h:14
Definition PhysicsProxyBase.h:97
Definition PhysicsReplicationLODInterface.h:13
Definition PhysicsReplicationInterface.h:14
Definition AndroidPlatformMisc.h:14
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition UniquePtr.h:107
UE_FORCEINLINE_HINT T * Get() const
Definition UniquePtr.h:324
Definition ActorComponent.h:152
Definition ChaosEventRelay.h:25
Definition SkeletalMeshComponent.h:307
FRealDouble FReal
Definition Real.h:22
EEventType
Definition EventManager.h:30
uint32 GetTypeHash(const FKey &Key)
Definition BlackboardKey.h:35
int32 P[512]
Definition FieldSystemNoiseAlgo.cpp:11
bool operator==(const FCachedAssetKey &A, const FCachedAssetKey &B)
Definition AssetDataMap.h:501
State
Definition PacketHandler.h:88
FORCEINLINE UE_STRING_CLASS RhsType && Rhs
Definition String.cpp.inl:718
Definition ChaosInterfaceWrapper.h:30
Definition EventsData.h:97
Definition EventsData.h:64
Definition EventsData.h:204
Definition EventsData.h:161
Definition BodyInstance.h:320
Definition PhysicsPublic.h:91
Definition PhysScene_Chaos.h:83
FOnConstraintBroken OnConstraintBrokenDelegate
Definition PhysScene_Chaos.h:88
void DispatchOnBroken()
Definition PhysScene_Chaos.cpp:2592
int32 ConstraintIndex
Definition PhysScene_Chaos.h:89
Definition ConstraintInstance.h:210
Definition ConstraintInstance.h:255
Definition PhysScene_Chaos.h:93
FOnConstraintViolated OnConstraintViolatedDelegate
Definition PhysScene_Chaos.h:98
int32 ConstraintIndex
Definition PhysScene_Chaos.h:99
void DispatchOnViolated(float LinearViolation, float AngularViolation)
Definition PhysScene_Chaos.cpp:2602
Definition PhysScene_AsyncPhysicsStateJobQueue.h:13
Definition ReplicatedState.h:86
Definition ChaosScopedSceneLock.h:36
Definition ChaosSolversModule.h:120
Definition ObjectPtr.h:488
FORCEINLINE T * Get() const
Definition ObjectPtr.h:664
Definition WeakObjectPtrTemplates.h:25