UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PhysScene_Chaos.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "Tickable.h"
7#include "EventsData.h"
8#include "Physics/PhysScene.h"
10#include "GameFramework/Actor.h"
11#include "PhysicsPublic.h"
12#include "PhysInterface_Chaos.h"
14#include "Chaos/ChaosScene.h"
16#include "Chaos/Real.h"
19#include "UObject/ObjectKey.h"
20
21#ifndef CHAOS_WITH_PAUSABLE_SOLVER
22#define CHAOS_WITH_PAUSABLE_SOLVER 1
23#endif
24
25// Currently compilation issue with Incredibuild when including headers required by event template functions
26#define XGE_FIXED 0
27
28class UPrimitiveComponent;
29
31class AdvanceOneTimeStepTask;
37struct FForceFieldProxy;
39
43
45
46class UWorld;
48class AWorldSettings;
53
54namespace Chaos
55{
56 class FPhysicsProxy;
57 class FClusterUnionPhysicsProxy;
58
59 struct FCollisionEventData;
60
61 enum class EEventType : int32;
62
63 template<typename PayloadType, typename HandlerType>
64 class TRawEventHandler;
65
66 class FAccelerationStructureHandle;
67
68 template <typename TPayload, typename T, int d>
69 class ISpatialAcceleration;
70
71 template <typename TPayload, typename T, int d>
72 class ISpatialAccelerationCollection;
73
74 template <typename T>
75 class TArrayCollectionArray;
76
77 struct FSerializedDataBuffer;
78}
79
81
91
101
111
116{
117public:
118
120
123 , const FName& DebugName=NAME_None
124#endif
125);
126
128
131
132 ENGINE_API void RegisterForCollisionEvents(UPrimitiveComponent* Component);
133 ENGINE_API void UnRegisterForCollisionEvents(UPrimitiveComponent* Component);
134
135 ENGINE_API void RegisterForGlobalCollisionEvents(UPrimitiveComponent* Component);
137
138 ENGINE_API void RegisterForGlobalRemovalEvents(UPrimitiveComponent* Component);
139 ENGINE_API void UnRegisterForGlobalRemovalEvents(UPrimitiveComponent* Component);
140
143
146
147 ENGINE_API void EnqueueAsyncPhysicsCommand(int32 PhysicsStep, UObject* OwningObject, const TFunction<void()>& Command, const bool bEnableResim = false);
148
149
153 ENGINE_API void AddObject(UPrimitiveComponent* Component, FSkeletalMeshPhysicsProxy* InObject);
154 ENGINE_API void AddObject(UPrimitiveComponent* Component, FStaticMeshPhysicsProxy* InObject);
155 ENGINE_API void AddObject(UPrimitiveComponent* Component, Chaos::FSingleParticlePhysicsProxy* InObject);
156 ENGINE_API void AddObject(UPrimitiveComponent* Component, FGeometryCollectionPhysicsProxy* InObject);
157 ENGINE_API void AddObject(UPrimitiveComponent* Component, Chaos::FClusterUnionPhysicsProxy* InObject);
158
159 ENGINE_API void AddToComponentMaps(UPrimitiveComponent* Component, IPhysicsProxyBase* InObject);
161
171
174
176
178
180
182
183 ENGINE_API virtual void AddReferencedObjects(FReferenceCollector& Collector) override;
185 template<class OwnerType>
186 OwnerType* GetOwningComponent(const IPhysicsProxyBase* PhysicsProxy) const
187 {
188 UE_CHAOS_ASYNC_INITBODY_READSCOPELOCK(PhysicsProxyComponentMapsLock);
189 auto* CompPtr = PhysicsProxyToComponentMap.Find(PhysicsProxy);
190 return CompPtr ? Cast<OwnerType>(*CompPtr) : nullptr;
191 }
192
193 template<>
194 ENGINE_API UPrimitiveComponent* GetOwningComponent(const IPhysicsProxyBase* PhysicsProxy) const;
195
197 const TArray<IPhysicsProxyBase*>* GetOwnedPhysicsProxies(UPrimitiveComponent* Comp) const
198 {
199 UE_CHAOS_ASYNC_INITBODY_READSCOPELOCK(PhysicsProxyComponentMapsLock);
200 return ComponentToPhysicsProxyMap.Find(Comp);
201 }
202
212
214
216
218 ENGINE_API const UWorld* GetOwningWorld() const;
219
220 ENGINE_API void ResimNFrames(int32 NumFrames);
221
223 ENGINE_API void AddCustomPhysics_AssumesLocked(FBodyInstance* BodyInstance, FCalculateCustomPhysics& CalculateCustomPhysics);
224 ENGINE_API void AddForce_AssumesLocked(FBodyInstance* BodyInstance, const FVector& Force, bool bAllowSubstepping, bool bAccelChange);
225 ENGINE_API void AddForceAtPosition_AssumesLocked(FBodyInstance* BodyInstance, const FVector& Force, const FVector& Position, bool bAllowSubstepping, bool bIsLocalForce = false);
226 ENGINE_API void AddRadialForceToBody_AssumesLocked(FBodyInstance* BodyInstance, const FVector& Origin, const float Radius, const float Strength, const uint8 Falloff, bool bAccelChange, bool bAllowSubstepping);
228 ENGINE_API void AddTorque_AssumesLocked(FBodyInstance* BodyInstance, const FVector& Torque, bool bAllowSubstepping, bool bAccelChange);
232
233 ENGINE_API bool MarkForPreSimKinematicUpdate(USkeletalMeshComponent* InSkelComp, ETeleportType InTeleport, bool bNeedsSkinning);
234 ENGINE_API void ClearPreSimKinematicUpdate(USkeletalMeshComponent* InSkelComp);
235
238
240
242
244 ENGINE_API void ApplyWorldOffset(FVector InOffset);
245 ENGINE_API virtual float OnStartFrame(float InDeltaTime) override;
246
247 ENGINE_API bool HandleExecCommands(const TCHAR* Cmd, FOutputDevice* Ar);
250
252
253 ENGINE_API void StartAsync();
254 ENGINE_API bool HasAsyncScene() const;
258
263
266
268
269 ENGINE_API void DeferPhysicsStateCreation(UPrimitiveComponent* Component);
272
279
280 UChaosEventRelay* GetChaosEventRelay() const { return ChaosEventRelay.Get(); }
281
283 ENGINE_API const FRigidBodyState* GetStateFromReplicationCache(UPrimitiveComponent* RootComponent, int& ServerFrame);
284
286 ENGINE_API void RegisterForReplicationCache(UPrimitiveComponent* RootComponent);
287
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. ")
289 void PopulateReplicationCache(const int32 PhysicsStep) { }
290
293 {
294 // Create the physics replication cache if not already created
296
297 return PhysicsReplicationCache.Get();
298 }
299
302
303 struct UE_DEPRECATED(5.5, "Deprecated, ReplicationCache has been moved to FPhysicsReplicationCache")
305 {
307 FReplicationCacheData() = default;
309 ~FReplicationCacheData() = default;
312 FReplicationCacheData& operator=(const FReplicationCacheData&) = default;
313 FReplicationCacheData& operator=(FReplicationCacheData&&) = default;
315
317 UPrimitiveComponent* GetRootComponent() { return RootComponent.Get(); }
318 FRigidBodyState& GetState() { return State; }
319 void SetAccessTime(Chaos::FReal Time) { AccessTime = Time; }
320 Chaos::FReal GetAccessTime() { return AccessTime; }
321 void SetIsCached(bool InIsCached) { bValidStateCached = InIsCached; }
322 bool IsCached() { return bValidStateCached; }
324
325 private:
328 Chaos::FReal AccessTime;
332 };
333
334 struct UE_DEPRECATED(5.5, "Deprecated, ReplicationCache has been moved to FPhysicsReplicationCache")
336 {
345
347 int32 ServerFrame = 0;
349 void Reset()
350 {
351 ServerFrame = 0;
352 Map.Reset();
353 }
355 };
356
357private:
358
359 TMap<UObject*, Chaos::FSerializedDataBufferPtr> PendingMigratedPhysicsStateByComponent;
360
361 TUniquePtr<FPhysicsReplicationCache> PhysicsReplicationCache;
362
363 TSet<UPrimitiveComponent*> CollisionEventRegistrations;
364 TSet<UPrimitiveComponent*> GlobalCollisionEventRegistrations;
365 TSet<UPrimitiveComponent*> GlobalRemovalEventRegistrations;
366
367 // contains the set of properties that uniquely identifies a reported collision
368 // Note that order matters, { Body0, Body1 } is not the same as { Body1, Body0 }
369 struct FUniqueContactPairKey
370 {
371 const void* Body0;
372 const void* Body1;
373
374 friend bool operator==(const FUniqueContactPairKey& Lhs, const FUniqueContactPairKey& Rhs)
375 {
376 return Lhs.Body0 == Rhs.Body0 && Lhs.Body1 == Rhs.Body1;
377 }
378
379 friend inline uint32 GetTypeHash(FUniqueContactPairKey const& P)
380 {
381 return (uint32)((PTRINT)P.Body0 ^ ((PTRINT)P.Body1 << 18));
382 }
383 };
384
385 ENGINE_API FCollisionNotifyInfo& GetPendingCollisionForContactPair(const void* P0, const void* P1, Chaos::FReal SolverTime, bool& bNewEntry);
387 TMultiMap<FUniqueContactPairKey, int32> ContactPairToPendingNotifyMap;
388
390 TArray<FCollisionNotifyInfo> PendingCollisionNotifies;
391
392 // Chaos Event Handlers
393 ENGINE_API void HandleEachCollisionEvent(const TArray<int32>& CollisionIndices, IPhysicsProxyBase* PhysicsProxy0, UPrimitiveComponent* const Comp0, Chaos::FCollisionDataArray const& CollisionData, Chaos::FReal MinDeltaVelocityThreshold);
394 ENGINE_API void HandleGlobalCollisionEvent(Chaos::FCollisionDataArray const& CollisionData);
395 ENGINE_API void HandleCollisionEvents(const Chaos::FCollisionEventData& CollisionData);
396 ENGINE_API void DispatchPendingCollisionNotifies();
397
398 ENGINE_API void HandleBreakingEvents(const Chaos::FBreakingEventData& Event);
399 ENGINE_API void HandleRemovalEvents(const Chaos::FRemovalEventData& Event);
400 ENGINE_API void HandleCrumblingEvents(const Chaos::FCrumblingEventData& Event);
401
403 TUniquePtr<IPhysicsReplication> PhysicsReplication;
404
406 TUniquePtr<IPhysicsReplicationLOD> PhysicsReplicationLOD;
407
408#if CHAOS_WITH_PAUSABLE_SOLVER
410 ENGINE_API void OnUpdateWorldPause();
411#endif
412
413
414#if WITH_EDITOR
415 ENGINE_API bool IsOwningWorldEditor() const;
416#endif
417
418 ENGINE_API virtual void OnSyncBodies(Chaos::FPhysicsSolverBase* Solver) override;
419
420 ENGINE_API void EnableAsyncPhysicsTickCallback();
421
422#if 0
424 {
425 // #todo : Initialize
426 // Set the buffered kinematic data on the game and render thread
427 // InActorReference.GetPhysicsProxy()->SetKinematicData(...)
428 }
429
431 {
432 // #todo : Implement
433 }
434
436 {
437 // #todo : Implement
438 }
439#endif
440
442 ENGINE_API void RemoveSpringConstraint(const FPhysicsConstraintHandle& Constraint);
443
444#if 0
446 {
447 // #todo : Implement
448 }
449
451 {
452 // #todo : Implement
453 }
454#endif
455
457 ENGINE_API void UpdateKinematicsOnDeferredSkelMeshes();
458
460 struct FDeferredKinematicUpdateInfo
461 {
463 ETeleportType TeleportType;
465 bool bNeedsSkinning;
466 };
467
469 TArray<TPair<TWeakObjectPtr<USkeletalMeshComponent>, FDeferredKinematicUpdateInfo>> DeferredKinematicUpdateSkelMeshes;
470
471 TSet<UPrimitiveComponent*> DeferredCreatePhysicsStateComponents;
472
473 // Queue used to create/destroy physics state asynchronously.
474 TUniquePtr<FPhysScene_AsyncPhysicsStateJobQueue> AsyncPhysicsStateJobQueue;
475
476 // RWLock for thread safe access to PhysicsProxyToComponentMap and ComponentToPhysicsProxyMap.
477 mutable FRWLock PhysicsProxyComponentMapsLock;
478
479 // RWLock for thread safe access to CollisionEventRegistrations
480 mutable FRWLock CollisionEventRegistrationsLock;
481
482 //Body Instances
484 // Temp Interface
486
487 // Maps PhysicsProxy to Component that created the PhysicsProxy
489
490 // Maps Component to PhysicsProxy that is created
492
493 //TSet<UActorComponent*> FixedTickComponents;
494 //TSet<AActor*> FixedTickActors;
495
497 TWeakObjectPtr<AActor> SolverActor;
498
499 TObjectPtr<UChaosEventRelay> ChaosEventRelay;
500
501 Chaos::FReal LastEventDispatchTime;
502 Chaos::FReal LastBreakEventDispatchTime;
503 Chaos::FReal LastRemovalEventDispatchTime;
504 Chaos::FReal LastCrumblingEventDispatchTime;
505
506 class FAsyncPhysicsTickCallback* AsyncPhysicsTickCallback = nullptr;
507
508#if WITH_EDITOR
509 // Counter used to check a match with the single step status.
511#endif
512#if CHAOS_WITH_PAUSABLE_SOLVER
513 // Cache the state of the game pause in order to avoid sending extraneous commands to the solver.
514 bool bIsWorldPaused;
515#endif
516
517 // Allow other code to obtain read-locks when needed
520};
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
FPlatformTypes::PTRINT PTRINT
A signed integer the same size as a pointer.
Definition Platform.h:1148
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
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
#define PRAGMA_ENABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:12
#define PRAGMA_DISABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:8
UE_FORCEINLINE_HINT uint64 GetState() const
Definition LockFreeList.h:46
int32 GEnableKinematicDeferralStartPhysicsCondition
Definition PhysScene_Chaos.cpp:69
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Actor.h:257
Definition ClusterUnionPhysicsProxy.h:63
Definition PhysicsSolverBase.h:313
Definition SingleParticlePhysicsProxy.h:58
Definition ISpatialAccelerationCollection.h:23
Definition Transform.h:115
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 Array.h:670
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 CriticalSection.h:14
Definition Object.h:95
Definition World.h:918
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 PhysScene_Chaos.h:103
void DispatchPlasticDeformation()
Definition PhysScene_Chaos.cpp:2614
FOnPlasticDeformation OnPlasticDeformationDelegate
Definition PhysScene_Chaos.h:108
int32 ConstraintIndex
Definition PhysScene_Chaos.h:109
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 Tuple.h:652
Definition WeakObjectPtrTemplates.h:25