UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PullPhysicsDataImp.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "Containers/Queue.h"
5#include "Chaos/Defines.h"
8#include "Chaos/ParallelFor.h"
12
13namespace Chaos
14{
15
16class FClusterUnionPhysicsProxy;
17class FCharacterGroundConstraintProxy;
18class FJointConstraintPhysicsProxy;
19
20template <typename TProxy, typename TTimeStamp>
22{
23public:
25 {
26 ensure(Timestamp.Get() == nullptr);
27 Timestamp = InProxy.GetSyncTimestamp();
28 Proxy = &InProxy;
29 }
30
32 {
33 if( Timestamp )
34 {
35 return !Timestamp->bDeleted ? Proxy : nullptr;
36 }
37 return nullptr;
38 }
39
40 const TTimeStamp* GetTimestamp() const { return static_cast<TTimeStamp*>(Timestamp.Get()); }
41
42protected:
43 TBasePullData() : Proxy(nullptr){}
44 ~TBasePullData() = default;
45
46private:
47 TProxy* Proxy;
48 TSharedPtr<FProxyTimestampBase,ESPMode::ThreadSafe> Timestamp; //question: is destructor expensive now? might need a better way
49};
50
51//Simple struct for when the simulation dirties a particle. Copies all properties regardless of which changed since they tend to change together
52struct FDirtyRigidParticleData : public TBasePullData<FSingleParticlePhysicsProxy, FSingleParticleProxyTimestamp>
53{
59};
60
61struct FDirtyRigidParticleReplicationErrorData : public TBasePullData<FSingleParticlePhysicsProxy, FSingleParticleProxyTimestamp>
62{
65};
66
67struct FDirtyGeometryCollectionData : public TBasePullData<FGeometryCollectionPhysicsProxy, FProxyTimestampBase>
68{
69public:
70 bool HasResults() const { return ResultPtr.IsValid(); }
71
75
80
82 {
83 check(ResultPtr);
84 return *ResultPtr;
85 }
86
88 {
89 check(ResultPtr);
90 return *ResultPtr;
91 }
92
93private:
95};
96
105
133
135 bool bIsBreaking = false;
136 bool bIsBroken = false;
137 bool bIsViolating = false;
138 bool bDriveTargetChanged = false;
141 float LinearViolation = 0.f;
142 float AngularViolation = 0.f;
143};
144
145class FJointConstraint;
146
147struct FDirtyJointConstraintData : public TBasePullData<FJointConstraintPhysicsProxy, FProxyTimestampBase>
148{
150};
151
152struct FDirtyCharacterGroundConstraintData : public TBasePullData<FCharacterGroundConstraintProxy, FProxyTimestampBase>
153{
158 FGeometryParticleHandle* GroundParticle = nullptr;
159 bool bSettingsChanged = false;
160 bool bDataChanged = false;
161 bool bGroundParticleChanged = false;
162};
163
164//A simulation frame's result of dirty particles. These are all the particles that were dirtied in this particular sim step
181
182}; // namespace Chaos
#define check(expr)
Definition AssertionMacros.h:314
#define ensure( InExpression)
Definition AssertionMacros.h:464
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
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
#define PRAGMA_ENABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:12
#define PRAGMA_DISABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:8
#define FVector
Definition IOSSystemIncludes.h:8
ESPMode
Definition SharedPointerFwd.h:12
Definition CharacterGroundConstraintSettings.h:32
Definition CharacterGroundConstraintSettings.h:9
Definition ImplicitObject.h:111
Definition PBDJointConstraintData.h:38
Definition PullPhysicsDataImp.h:166
int32 SolverTimestamp
Definition PullPhysicsDataImp.h:175
TArray< FDirtyGeometryCollectionData > DirtyGeometryCollections
Definition PullPhysicsDataImp.h:170
TArray< FDirtyRigidParticleData > DirtyRigids
Definition PullPhysicsDataImp.h:168
TArray< FDirtyClusterUnionData > DirtyClusterUnions
Definition PullPhysicsDataImp.h:171
FReal ExternalEndTime
Definition PullPhysicsDataImp.h:177
TMap< const IPhysicsProxyBase *, FDirtyRigidParticleReplicationErrorData > DirtyRigidErrors
Definition PullPhysicsDataImp.h:169
TArray< FDirtyCharacterGroundConstraintData > DirtyCharacterGroundConstraints
Definition PullPhysicsDataImp.h:173
FReal ExternalStartTime
Definition PullPhysicsDataImp.h:176
TArray< FDirtyJointConstraintData > DirtyJointConstraints
Definition PullPhysicsDataImp.h:172
Definition ParticleHandle.h:436
Definition Vector.h:407
Definition GeometryCollectionProxyData.h:237
Definition PhysicsProxyBase.h:97
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition RefCounting.h:454
UE_FORCEINLINE_HINT bool IsValid() const
Definition RefCounting.h:594
Definition SharedPointer.h:692
UE_FORCEINLINE_HINT ObjectType * Get() const
Definition SharedPointer.h:1065
Definition SkeletalMeshComponent.h:307
FRealDouble FReal
Definition Real.h:22
EObjectStateType
Definition ObjectState.h:10
float FRealSingle
Definition Real.h:14
Definition ParticleDirtyFlags.h:722
Definition PullPhysicsDataImp.h:153
FCharacterGroundConstraintDynamicData Data
Definition PullPhysicsDataImp.h:157
FCharacterGroundConstraintSettings Settings
Definition PullPhysicsDataImp.h:156
Definition PullPhysicsDataImp.h:107
FQuat R
Definition PullPhysicsDataImp.h:109
PRAGMA_DISABLE_DEPRECATION_WARNINGS FDirtyClusterUnionData()
Definition PullPhysicsDataImp.h:120
Chaos::FImplicitObjectPtr Geometry
Definition PullPhysicsDataImp.h:117
TArray< FCollisionFilterData > SimData
Definition PullPhysicsDataImp.h:131
EObjectStateType ObjectState
Definition PullPhysicsDataImp.h:114
FVec3 X
Definition PullPhysicsDataImp.h:108
Chaos::FDirtyClusterUnionData & operator=(const Chaos::FDirtyClusterUnionData &)=default
TArray< FCollisionData > CollisionData
Definition PullPhysicsDataImp.h:129
FDirtyClusterUnionData(const FDirtyClusterUnionData &)=default
bool bIsAnchored
Definition PullPhysicsDataImp.h:115
FRealSingle Mass
Definition PullPhysicsDataImp.h:112
TArray< FDirtyClusterUnionParticleData > ChildParticles
Definition PullPhysicsDataImp.h:116
TArray< FCollisionFilterData > QueryData
Definition PullPhysicsDataImp.h:130
FVec3 V
Definition PullPhysicsDataImp.h:110
PRAGMA_ENABLE_DEPRECATION_WARNINGS TSharedPtr< FImplicitObject, ESPMode::ThreadSafe > SharedGeometry
Definition PullPhysicsDataImp.h:127
FVec3f Inertia
Definition PullPhysicsDataImp.h:113
FVec3 W
Definition PullPhysicsDataImp.h:111
Definition PullPhysicsDataImp.h:98
FUniqueIdx ParticleIdx
Definition PullPhysicsDataImp.h:99
FRigidTransform3 ChildToParent
Definition PullPhysicsDataImp.h:100
int32 BoneId
Definition PullPhysicsDataImp.h:103
void * CachedOwner
Definition PullPhysicsDataImp.h:102
IPhysicsProxyBase * Proxy
Definition PullPhysicsDataImp.h:101
Definition PullPhysicsDataImp.h:68
FDirtyGeometryCollectionData & operator=(const FDirtyGeometryCollectionData &Other)=default
FDirtyGeometryCollectionData(FDirtyGeometryCollectionData &&Other)=default
FDirtyGeometryCollectionData & operator=(FDirtyGeometryCollectionData &&Other)=default
FDirtyGeometryCollectionData(const FDirtyGeometryCollectionData &Other)=default
FDirtyGeometryCollectionData()
Definition PullPhysicsDataImp.h:72
FGeometryCollectionResults & Results()
Definition PullPhysicsDataImp.h:81
const FGeometryCollectionResults & Results() const
Definition PullPhysicsDataImp.h:87
bool HasResults() const
Definition PullPhysicsDataImp.h:70
Definition PullPhysicsDataImp.h:148
FJointConstraintOutputData OutputData
Definition PullPhysicsDataImp.h:149
Definition PullPhysicsDataImp.h:53
EObjectStateType ObjectState
Definition PullPhysicsDataImp.h:58
FVec3 W
Definition PullPhysicsDataImp.h:57
FVec3 X
Definition PullPhysicsDataImp.h:54
FVec3 V
Definition PullPhysicsDataImp.h:56
FQuat R
Definition PullPhysicsDataImp.h:55
Definition PullPhysicsDataImp.h:62
FVec3 ErrorX
Definition PullPhysicsDataImp.h:63
FQuat ErrorR
Definition PullPhysicsDataImp.h:64
Definition PullPhysicsDataImp.h:134
Definition GeometryParticlesfwd.h:87
Definition PullPhysicsDataImp.h:22
TProxy * GetProxy() const
Definition PullPhysicsDataImp.h:31
TBasePullData()
Definition PullPhysicsDataImp.h:43
const TTimeStamp * GetTimestamp() const
Definition PullPhysicsDataImp.h:40
~TBasePullData()=default
void SetProxy(TProxy &InProxy)
Definition PullPhysicsDataImp.h:24
Definition CollisionFilterData.h:46
bool bDeleted
Definition PhysicsProxyBase.h:57