17class FDirtyPropertiesManager;
18class FPullPhysicsData;
73 Base->SetDirtyIdx(Idx);
80 template<
typename TProxiesArray>
91 Proxy->SetDirtyIdx(Idx++);
124 Base->ResetDirtyIdx();
187 Bucket.ProxiesData.Reset();
190 DirtyProxyBucketInfo.
Reset();
200 template <
typename Lambda>
205 int32 BucketIdx, InnerIdx;
206 DirtyProxyBucketInfo.GetBucketIdx(Idx, BucketIdx, InnerIdx);
207 Func(InnerIdx, DirtyProxyBuckets[BucketIdx].ProxiesData[InnerIdx]);
211 template <
typename Lambda>
216 int32 BucketIdx, InnerIdx;
217 DirtyProxyBucketInfo.GetBucketIdx(Idx, BucketIdx, InnerIdx);
218 Func(InnerIdx, DirtyProxyBuckets[BucketIdx].ProxiesData[InnerIdx]);
222 template <
typename Lambda>
235 template <
typename Lambda>
264 if(
NumShapes < Dirty.ShapeDataIndices.Num())
266 Dirty.ShapeDataIndices.SetNum(
NumShapes);
283class FChaosMarshallingManager;
352 if (HistoryQueue_Internal.Num() > 0)
387 template <
typename TProxiesArray>
420 SimCommandsScheduled_Internal.Add(
SimCommand);
425 return SimCommandsScheduled_Internal;
431 SimCallbackObject->bPendingDelete_External =
true;
476 PullDataQueue.Dequeue(Result);
492 std::atomic<FReal> ExternalTime_External;
493 std::atomic<int32> ExternalTimestamp_External;
494 std::atomic<FReal> SimTime_External;
495 std::atomic<int32> InternalStep_External;
512 std::atomic<int32> Delay;
516 CHAOS_API void PrepareExternalQueue_External();
520 FRWLock MarshallingManagerLock;
#define ensureAlwaysMsgf(InExpression, InFormat,...)
Definition AssertionMacros.h:467
#define ensure( InExpression)
Definition AssertionMacros.h:464
#define UE_CHAOS_ASYNC_INITBODY_READSCOPELOCK(x)
Definition AsyncInitBodyHelper.h:66
#define UE_CHAOS_ASYNC_INITBODY_WRITESCOPELOCK(x)
Definition AsyncInitBodyHelper.h:65
@ INDEX_NONE
Definition CoreMiscDefines.h:150
void ParallelFor(int32 Num, TFunctionRef< void(int32)> Body, bool bForceSingleThread, bool bPumpRenderingThread=false)
Definition ParallelFor.h:481
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
EPhysicsProxyType
Definition PhysicsProxyBase.h:11
Definition ChaosMarshallingManager.h:314
void EnqueueCommandScheduled_Internal(FSimCallbackCommandObject *SimCommand)
Definition ChaosMarshallingManager.h:418
FPullPhysicsData * GetCurrentPullData_Internal()
Definition ChaosMarshallingManager.h:467
CHAOS_API void Step_External(FReal ExternalDT, const int32 NumSteps=1, bool bSolverSubstepped=false)
Definition ChaosMarshallingManager.cpp:72
void RegisterSimCallbackObject_External(ISimCallbackObject *SimCallbackObject)
Definition ChaosMarshallingManager.h:406
FRWLock & GetMarshallingManagerLock()
Definition ChaosMarshallingManager.h:489
const FDirtyProxiesBucketInfo & GetDirtyProxyBucketInfo_External()
Definition ChaosMarshallingManager.h:374
TArray< FSimCallbackCommandObject * > & GetSimCommandsScheduled_Internal()
Definition ChaosMarshallingManager.h:423
void SetNumDirtyShapes(IPhysicsProxyBase *Proxy, int32 NumShapes)
Definition ChaosMarshallingManager.h:400
void AddDirtyProxy(IPhysicsProxyBase *ProxyBaseIn)
Definition ChaosMarshallingManager.h:337
CHAOS_API ~FChaosMarshallingManager()
Definition ChaosMarshallingManager.cpp:37
int32 GetInternalStep_External() const
Definition ChaosMarshallingManager.h:461
int32 GetDirtyProxyBucketInfoNum_External(EPhysicsProxyType Type)
Definition ChaosMarshallingManager.h:380
FPullPhysicsData * PopPullData_External()
Definition ChaosMarshallingManager.h:473
CHAOS_API void SetHistoryLength_Internal(int32 InHistoryLength)
Definition ChaosMarshallingManager.cpp:280
void RemoveDirtyProxy(IPhysicsProxyBase *ProxyBaseIn)
Definition ChaosMarshallingManager.h:343
void SetConsumerData_Internal(FPushPhysicsData *InPushData)
Definition ChaosMarshallingManager.h:332
int32 GetExternalTimestamp_External() const
Definition ChaosMarshallingManager.h:455
void SetTickDelay_External(int32 InDelay)
Definition ChaosMarshallingManager.h:464
CHAOS_API void FreeData_Internal(FPushPhysicsData *PushData)
Definition ChaosMarshallingManager.cpp:138
int32 GetNumHistory_Internal() const
Definition ChaosMarshallingManager.h:486
void RemoveDirtyProxyFromHistory_Internal(IPhysicsProxyBase *ProxyBaseIn)
Definition ChaosMarshallingManager.h:349
void AddDirtyProxyShape(IPhysicsProxyBase *ProxyBaseIn, int32 ShapeIdx)
Definition ChaosMarshallingManager.h:394
CHAOS_API void FreeDataToHistory_Internal(FPushPhysicsData *PushData)
Definition ChaosMarshallingManager.cpp:246
CHAOS_API void FreePullData_External(FPullPhysicsData *PullData)
Definition ChaosMarshallingManager.cpp:150
CHAOS_API void FinalizePullData_Internal(int32 LatestExternalTimestampConsumed, FReal SimStartTime, FReal DeltaTime)
Definition ChaosMarshallingManager.cpp:42
FReal GetExternalTime_External() const
Definition ChaosMarshallingManager.h:458
CHAOS_API TArray< FPushPhysicsData * > StealHistory_Internal(int32 NumFrames)
Definition ChaosMarshallingManager.cpp:300
FPushPhysicsData * GetProducerData_External()
Definition ChaosMarshallingManager.h:320
CHAOS_API FChaosMarshallingManager()
Definition ChaosMarshallingManager.cpp:22
void AddSimCallbackInputData_External(ISimCallbackObject *SimCallbackObject, FSimCallbackInput *InputData)
Definition ChaosMarshallingManager.h:435
void RegisterSimCommand_External(FSimCallbackCommandObject *SimCommand)
Definition ChaosMarshallingManager.h:412
void UnregisterSimCallbackObject_External(ISimCallbackObject *SimCallbackObject)
Definition ChaosMarshallingManager.h:428
void RemoveDirtyProxyIfNoShapesAreDirty(IPhysicsProxyBase *ProxyBaseIn)
Definition ChaosMarshallingManager.h:368
void AddDirtyProxiesUnsafe(TProxiesArray &ProxiesArray)
Definition ChaosMarshallingManager.h:388
CHAOS_API FPushPhysicsData * StepInternalTime_External()
Definition ChaosMarshallingManager.cpp:120
FPushPhysicsData * GetConsumerData_Internal()
Definition ChaosMarshallingManager.h:326
Definition ParticleDirtyFlags.h:1129
void Clear(FDirtyPropertiesManager &Manager, int32 Idx)
Definition ParticleDirtyFlags.h:1168
void MoveData(FDirtyPropertiesManager &Manager, int32 FromIdx, int32 ToIdx)
Definition ParticleDirtyFlags.h:1181
Definition ParticleDirtyFlags.h:1039
Definition ChaosMarshallingManager.h:62
void RemoveWithoutDirtyIdx(IPhysicsProxyBase *Base, FDirtyPropertiesManager &Manager)
Definition ChaosMarshallingManager.h:130
void AddMultipleUnsafe(TProxiesArray &ProxiesArray)
Definition ChaosMarshallingManager.h:81
FShapeDirtyData * GetShapesDirtyData()
Definition ChaosMarshallingManager.h:197
const FDirtyProxiesBucketInfo & GetDirtyProxyBucketInfo() const
Definition ChaosMarshallingManager.h:194
FDirtyProxy & GetDirtyProxyAt(EPhysicsProxyType ProxyType, int32 Idx)
Definition ChaosMarshallingManager.h:198
void Reset()
Definition ChaosMarshallingManager.h:183
void ForEachProxy(const Lambda &Func) const
Definition ChaosMarshallingManager.h:236
void ParallelForEachProxy(const Lambda &Func) const
Definition ChaosMarshallingManager.h:212
void SetNumDirtyShapes(IPhysicsProxyBase *Proxy, int32 NumShapes)
Definition ChaosMarshallingManager.h:259
void RemoveIfNoShapesAreDirty(IPhysicsProxyBase *Base)
Definition ChaosMarshallingManager.h:166
void ParallelForEachProxy(const Lambda &Func)
Definition ChaosMarshallingManager.h:201
void ForEachProxy(const Lambda &Func)
Definition ChaosMarshallingManager.h:223
void Add(IPhysicsProxyBase *Base)
Definition ChaosMarshallingManager.h:64
void Remove(IPhysicsProxyBase *Base)
Definition ChaosMarshallingManager.h:102
int32 NumDirtyShapes() const
Definition ChaosMarshallingManager.h:195
void AddShape(IPhysicsProxyBase *Proxy, int32 ShapeIdx)
Definition ChaosMarshallingManager.h:248
Definition PullPhysicsDataImp.h:166
Definition ParticleDirtyFlags.h:1228
void Clear(FDirtyPropertiesManager &Manager, int32 Idx)
Definition ParticleDirtyFlags.h:1259
Definition SimCallbackObject.h:427
Definition SimCallbackObject.h:68
Definition GeometryCollectionProxyData.h:237
Definition PhysicsProxyBase.h:97
void SetDirtyIdx(const int32 Idx)
Definition PhysicsProxyBase.h:124
EPhysicsProxyType GetType() const
Definition PhysicsProxyBase.h:118
int32 GetDirtyIdx() const
Definition PhysicsProxyBase.h:123
UE_REWRITE bool IsEmpty() const
Definition Array.h:1133
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
Definition SpscQueue.h:18
CHAOS_API bool bEnableAsyncInitBody
Definition AsyncInitBodyHelper.cpp:10
Definition SkeletalMeshComponent.h:307
FRealDouble FReal
Definition Real.h:22
@ Add
Definition PendingSpatialData.h:18
Definition ParticleDirtyFlags.h:1006
void Reset()
Definition ParticleDirtyFlags.h:1010
int32 TotalNum
Definition ParticleDirtyFlags.h:1008
int32 Num[(uint32)(EPhysicsProxyType::Count)]
Definition ParticleDirtyFlags.h:1007
Definition ChaosMarshallingManager.h:57
TArray< FDirtyProxy > ProxiesData
Definition ChaosMarshallingManager.h:58
Definition ChaosMarshallingManager.h:21
void Clear(FDirtyPropertiesManager &Manager, int32 DataIdx, FShapeDirtyData *ShapesData)
Definition ChaosMarshallingManager.h:41
void AddShape(int32 ShapeDataIdx)
Definition ChaosMarshallingManager.h:36
IPhysicsProxyBase * Proxy
Definition ChaosMarshallingManager.h:22
void SetDirtyIdx(int32 Idx)
Definition ChaosMarshallingManager.h:31
void MoveData(FDirtyPropertiesManager &Manager, int32 FromIdx, int32 ToIdx)
Definition ChaosMarshallingManager.h:50
FDirtyChaosProperties PropertyData
Definition ChaosMarshallingManager.h:23
FDirtyProxy(IPhysicsProxyBase *InProxy)
Definition ChaosMarshallingManager.h:26
TArray< int32 > ShapeDataIndices
Definition ChaosMarshallingManager.h:24
Definition ChaosMarshallingManager.h:286
FReal ExternalDt
Definition ChaosMarshallingManager.h:290
void Reset()
Definition ChaosMarshallingManager.cpp:156
void ClearAsyncInputs()
Definition ChaosMarshallingManager.cpp:209
void ClearAsyncInputForCallback(ISimCallbackObject *Callback)
Definition ChaosMarshallingManager.cpp:233
FDirtyPropertiesManager DirtyPropertiesManager
Definition ChaosMarshallingManager.h:287
int32 ExternalTimestamp
Definition ChaosMarshallingManager.h:291
FDirtySet DirtyProxiesDataBuffer
Definition ChaosMarshallingManager.h:288
TArray< FSimCallbackInputAndObject > SimCallbackInputs
Definition ChaosMarshallingManager.h:299
void ClearSimCommands()
Definition ChaosMarshallingManager.cpp:221
int32 IntervalNumSteps
Definition ChaosMarshallingManager.h:294
void ResetDirtyProxiesBuffer()
Definition ChaosMarshallingManager.cpp:196
int32 InternalStep
Definition ChaosMarshallingManager.h:292
void ResetForHistory()
Definition ChaosMarshallingManager.cpp:172
TArray< ISimCallbackObject * > SimCallbackObjectsToAdd
Definition ChaosMarshallingManager.h:297
TArray< ISimCallbackObject * > SimCallbackObjectsToRemove
Definition ChaosMarshallingManager.h:298
bool bSolverSubstepped
Definition ChaosMarshallingManager.h:295
TArray< FSimCallbackCommandObject * > SimCommands
Definition ChaosMarshallingManager.h:300
void CopySubstepData(const FPushPhysicsData &FirstStepData)
Definition ChaosMarshallingManager.cpp:316
int32 IntervalStep
Definition ChaosMarshallingManager.h:293
FReal StartTime
Definition ChaosMarshallingManager.h:289