UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ChaosVDRecording.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Chaos/Core.h"
12#include "Chaos/ImplicitFwd.h"
18#include <atomic>
19
22
23#include "ChaosVDRecording.generated.h"
24
25#define UE_API CHAOSVDDATA_API
26
28{
29 class FChaosVDSerializableNameTable;
30}
31
33
34
38{
42 template <typename DataStructType>
43 static FChaosVDCustomUserDataHandle MakeHandle(const TSharedRef<DataStructType>& DataPtr);
44
46 UE_API FName GetTypeName() const;
47
49 template <typename DataStructType>
50 DataStructType* GetData() const;
51
53 template <typename DataStructType>
55private:
56
58 template <typename DataStructType>
60
63};
64
65template <typename DataStructType>
66TSharedPtr<DataStructType> FChaosVDCustomUserDataHandle::GetDataAsShared() const
67{
69 {
71 }
72 return nullptr;
73}
74
75template <typename DataStructType>
76FChaosVDCustomUserDataHandle FChaosVDCustomUserDataHandle::MakeHandle(const TSharedRef<DataStructType>& DataPtr)
77{
79
80 NewCustomDataHandle.DataStruct = MakeShared<FStructOnScope>(DataStructType::StaticStruct(), reinterpret_cast<uint8*>(&DataPtr.Get()));
81 NewCustomDataHandle.DataSharedPtr = DataPtr;
82
84}
85
86template <typename DataStructType>
87DataStructType* FChaosVDCustomUserDataHandle::GetData() const
88{
90 {
91 return reinterpret_cast<DataStructType*>(DataStruct->GetStructMemory());
92 }
93
94 return nullptr;
95}
96
97template <typename DataStructType>
98bool FChaosVDCustomUserDataHandle::IsA_Internal(const TSharedPtr<FStructOnScope>& InStructOnScope) const
99{
100 if (InStructOnScope)
101 {
102 const UStruct* HandleStruct = InStructOnScope->GetStruct();
103 return HandleStruct && (DataStructType::StaticStruct() == HandleStruct || HandleStruct->IsChildOf(DataStructType::StaticStruct()));
104 }
105
106 return false;
107}
108
110{
112
116 template<typename DataType>
118
122 template<typename DataType>
124
125private:
126 TMap<FName, FChaosVDCustomUserDataHandle> CustomDataHandlesByType;
127};
128
131{
132 None = 0,
134 Open = 1 << 0,
136 ExplicitStage = 1 << 1,
137};
138
140
170
171UE_DEPRECATED(5.6, "FChaosVDStepData is deprecated and will be removed. Please use FChaosVDFrameStageData instead.")
173
179
185
194
196
197UE_DEPRECATED(5.6, "This FChaosVDStepsContainer is deprecated and it will be removed in the future. Use FChaosVDStagesContainer instead.")
199
201
202UENUM()
204{
205 None = 0,
206 HasGTDataToReRoute = 1 << 0,
207};
209
211{
219
221 UE_DEPRECATED(5.5, "Please use the DebugFName instead")
222 FString DebugName;
223 int32 SolverID = INDEX_NONE;
226 uint64 FrameCycle = 0;
227 Chaos::FRigidTransform3 SimulationTransform;
228 bool bIsKeyFrame = false;
229 bool bIsResimulated = false;
231 TSet<int32> ParticlesDestroyedIDs;
232 double StartTime = -1.0;
233 double EndTime = -1.0;
234
235 TArray<TSharedPtr<FChaosVDCharacterGroundConstraint>> RecordedCharacterGroundConstraints;
236
240 double GetFrameTime() const
241 {
242 if (StartTime < 0 || EndTime < 0)
243 {
244 return -1.0;
245 }
246
247 return EndTime - StartTime;
248 }
249
266
270 {
271 return NetworkTickOffset >= 0 ? NetworkTickOffset : 0;
272 }
273
275 {
276 return CustomData;
277 }
278
280 {
281 return CustomData;
282 }
283
285 {
286 return FrameAttributes;
287 }
288
293
298
299private:
300 FChaosVDCustomFrameData CustomData;
301
303};
304
306{
307
315
318 double StartTime = -1.0;
319 double EndTime = -1.0;
320
324 double GetFrameTime() const
325 {
326 if (StartTime < 0 || EndTime < 0)
327 {
328 return -1.0;
329 }
330
331 return EndTime - StartTime;
332 }
333
334 bool IsDirty() const
335 {
336 return bIsDirty;
337 }
338
340 {
341 bIsDirty = true;
342 }
343
344 UE_DEPRECATED(5.6, "RecordedNonSolverLocationsByID is deprecated and will be removed in a future release.")
346 UE_DEPRECATED(5.6, "RecordedNonSolverTransformsByID is deprecated and will be removed in a future release.")
348
349 UE_DEPRECATED(5.6, "RecordedDebugDrawBoxesBySolverID is deprecated and will be removed in a future release, use GetCustomDataContainer instead.")
351
352 UE_DEPRECATED(5.5, "RecordedSceneQueries is deprecated and will be removed in a future release, use RecordedSceneQueriesByQueryID instead.")
354
355 UE_DEPRECATED(5.6, "RecordedDebugDrawBoxesBySolverID is deprecated and will be removed in a future release, use GetCustomDataContainer instead.")
357
358 UE_DEPRECATED(5.6, "RecordedAABBTreesBySolverID is deprecated and will be removed in a future release, use GetCustomDataContainer instead.")
360
361 UE_DEPRECATED(5.6, "RecordedDebugDrawBoxesBySolverID is deprecated and will be removed in a future release, use GetCustomDataContainer instead.")
363 UE_DEPRECATED(5.6, "RecordedDebugDrawLinesBySolverID is deprecated and will be removed in a future release, use GetCustomDataContainer instead.")
365 UE_DEPRECATED(5.6, "RecordedDebugDrawSpheresBySolverID is deprecated and will be removed in a future release, use GetCustomDataContainer instead.")
367 UE_DEPRECATED(5.6, "RecordedDebugDrawImplicitObjectsBySolverID is deprecated and will be removed in a future release, use GetCustomDataContainer instead.")
369
371 {
372 return CustomData;
373 }
374
376 {
377 return CustomData;
378 }
379
380private:
381 FChaosVDCustomFrameData CustomData;
382 bool bIsDirty = false;
383};
384
385USTRUCT()
392
393USTRUCT()
400
402{
403 None = 0,
405 Live = 1 << 0,
407 Merged = 1 << 1,
408};
410
411
416{
418
419 /* Constant used to define inline allocators -
420 * Unless there are some scenarios with a lot of RBAN solvers in the recording, we usually don't go over 3 tracks most of the time so 16 should be plenty by default */
421 static constexpr int32 CommonTrackCount = 16;
422
425 {
426 return RecordedFramesDataPerSolver.Num();
427 }
428
430 UE_API int32 GetAvailableGameFramesNumber() const;
431 UE_API int32 GetAvailableGameFramesNumber_AssumesLocked() const;
432
435 {
436 return GameFrames;
437 }
438
441 {
442 return RecordedFramesDataPerSolver;
443 }
444
449 UE_API int32 GetAvailableSolverFramesNumber(int32 SolverID) const;
450 UE_API int32 GetAvailableSolverFramesNumber_AssumesLocked(int32 SolverID) const;
451
456 UE_API FName GetSolverFName(int32 SolverID);
457
458 UE_DEPRECATED(5.6, "Please use the GetSolverFName instead")
459 FString GetSolverName(int32 SolverID)
460 {
461 return TEXT("");
462 }
463
468 UE_API FName GetSolverFName_AssumedLocked(int32 SolverID);
469
470 UE_API bool IsServerSolver_AssumesLocked(int32 SolverID);
471 UE_API bool IsServerSolver(int32 SolverID);
472
473 UE_DEPRECATED(5.6, "Please use the GetSolverFName_AssumedLocked instead")
474 FString GetSolverName_AssumedLocked(int32 SolverID)
475 {
476 return TEXT("");
477 }
478
486 UE_API FChaosVDSolverFrameData* GetSolverFrameData_AssumesLocked(int32 SolverID, int32 FrameNumber, bool bKeyFrameOnly = false);
487
494 UE_API FChaosVDSolverFrameData* GetSolverFrameDataAtCycle_AssumesLocked(int32 SolverID, uint64 Cycle);
495
502 UE_API int32 GetLowestSolverFrameNumberAtCycle(int32 SolverID, uint64 Cycle);
503 UE_API int32 GetLowestSolverFrameNumberAtCycle_AssumesLocked(int32 SolverID, uint64 Cycle);
504
505 UE_API int32 GetLowestSolverFrameNumberAtNetworkFrameNumber_AssumesLocked(int32 SolverID, int32 NetworkFrameNumber);
506
507 UE_API int32 FindFirstSolverKeyFrameNumberFromFrame_AssumesLocked(int32 SolverID, int32 StartFrameNumber);
508
515 UE_API int32 GetLowestSolverFrameNumberGameFrame(int32 SolverID, int32 GameFrame);
516 UE_API int32 GetLowestSolverFrameNumberGameFrame_AssumesLocked(int32 SolverID, int32 GameFrame);
517
524 UE_API int32 GetLowestGameFrameAtSolverFrameNumber(int32 SolverID, int32 SolverFrame);
525 UE_API int32 GetLowestGameFrameAtSolverFrameNumber_AssumesLocked(int32 SolverID, int32 SolverFrame);
526
532 UE_API void AddFrameForSolver(const int32 SolverID, FChaosVDSolverFrameData&& InFrameData);
533
538 UE_API void AddGameFrameData(const FChaosVDGameFrameData& InFrameData);
539
542 {
543 return GeometryDataLoaded;
544 }
545
551 UE_API FChaosVDGameFrameData* GetGameFrameDataAtCycle_AssumesLocked(uint64 Cycle);
552
558 UE_API FChaosVDGameFrameData* GetGameFrameData_AssumesLocked(int32 FrameNumber);
559
561 UE_API FChaosVDGameFrameData* GetLastGameFrameData_AssumesLocked();
562
568 UE_API int32 GetLowestGameFrameNumberAtCycle(uint64 Cycle);
569 UE_API int32 GetLowestGameFrameNumberAtCycle_AssumesLocked(uint64 Cycle);
570
576 UE_API int32 GetLowestGameFrameNumberAtTime(double Time);
577
583 template<typename TAllocator>
584 void GetAvailableSolverIDsAtGameFrameNumber(int32 FrameNumber,TArray<int32, TAllocator>& OutSolversID);
585 template<typename TAllocator>
586 void GetAvailableSolverIDsAtGameFrameNumber_AssumesLocked(int32 FrameNumber, TArray<int32, TAllocator>& OutSolversID);
587 template<typename TAllocator>
588 void GetAvailableSolverIDsAtGameFrame(const FChaosVDGameFrameData& GameFrameData, TArray<int32, TAllocator>& OutSolversID);
589 template<typename TAllocator>
590 void GetAvailableSolverIDsAtGameFrame_AssumesLocked(const FChaosVDGameFrameData& GameFrameData, TArray<int32, TAllocator>& OutSolversID);
591
593 UE_API void CollapseSolverFramesRange_AssumesLocked(int32 SolverID, int32 StartFrame, int32 EndFrame, FChaosVDSolverFrameData& OutCollapsedFrameData);
594
597 {
598 return ImplicitObjects;
599 }
600
601 UE_DEPRECATED(5.4, "Please use GetGeometryMap instead")
602 const TMap<uint32, TSharedPtr<const Chaos::FImplicitObject>>& GetGeometryDataMap() const
603 {
604 check(false);
606 return DummyMap;
607 }
608
610 UE_API void AddImplicitObject(const uint32 ID, const Chaos::FImplicitObjectPtr& InImplicitObject);
611
612 UE_DEPRECATED(5.4, "Please use AddImplicitObject with FImplicitObjectPtr instead")
613 UE_API void AddImplicitObject(const uint32 ID, const TSharedPtr<Chaos::FImplicitObject>& InImplicitObject);
614
616 FString SessionName;
617
618 FRWLock& GetRecordingDataLock()
619 {
620 return RecordingDataLock;
621 }
622
624 bool IsLive() const
625 {
626 return EnumHasAnyFlags(RecordingAttributes, EChaosVDRecordingAttributes::Live);
627 }
628
631 {
632 if (bNewIsLive)
633 {
635 }
636 else
637 {
639 }
640 }
641
643 {
644 FWriteScopeLock WriteLock(RecordingDataLock);
645 EnumAddFlags(RecordingAttributes, Attributes);
646 }
647
649 {
650 FWriteScopeLock WriteLock(RecordingDataLock);
651 EnumAddFlags(RecordingAttributes, Attributes);
652 }
653
655 {
656 FReadScopeLock ReadLock(RecordingDataLock);
657 return GetAttributes_AssumesLocked();
658 }
659
661 {
662 return RecordingAttributes;
663 }
664
666 UE_API bool IsEmpty() const;
667
670 {
671 return LastUpdatedTimeAsCycle;
672 }
673
675 {
676 return CollisionChannelsInfoContainer;
677 }
678
679 UE_API void SetCollisionChannelsInfoContainer(const TSharedPtr<FChaosVDCollisionChannelsInfoContainer>& InCollisionChannelsInfo);
680
681 UE_API bool HasSolverID(int32 SolverID);
682 UE_API bool HasSolverID_AssumesLocked(int32 SolverID);
683
684 UE_API void ReserveSolverID(int32 SolverID);
685 UE_API void ReserveSolverID_AssumesLocked(int32 SolverID);
686
687 UE_API void CommitSolverID(int32 SolverID);
688 UE_API void CommitSolverID_AssumesLocked(int32 SolverID);
689
691 {
692 return AvailableTrackIDForRemapping++;
693 }
694
696 {
697 return CustomData;
698 }
699
701 {
702 return CustomData;
703 }
704
705private:
706 FChaosVDCustomFrameData CustomData;
707
708protected:
709
711 UE_API void AddImplicitObject(const uint32 ID, const Chaos::FImplicitObject* InImplicitObject);
712
713 UE_API void AddImplicitObject_Internal(const uint32 ID, const Chaos::FConstImplicitObjectPtr& InImplicitObject);
714
718 UE_API void AddKeyFrameNumberForSolver(int32 SolverID, int32 FrameNumber);
719 UE_API void AddKeyFrameNumberForSolver_AssumesLocked(int32 SolverID, int32 FrameNumber);
720 UE_API void GenerateAndStoreKeyframeForSolver_AssumesLocked(int32 SolverID, int32 CurrentFrameNumber, int32 LastKeyFrameNumber);
721
726
728
731
733
735
737 std::atomic<uint64> LastUpdatedTimeAsCycle;
738
741
743
746
747 std::atomic<int32> AvailableTrackIDForRemapping = 1;
748
749 friend class FChaosVDTraceProvider;
750 friend class FChaosVDTraceImplicitObjectProcessor;
751};
752
753template <typename DataType>
755{
756 if (const FChaosVDCustomUserDataHandle* FoundDataHandle = CustomDataHandlesByType.Find(DataType::StaticStruct()->GetFName()))
757 {
758 return FoundDataHandle->GetDataAsShared<DataType>();
759 }
760
761 return nullptr;
762}
763
764template <typename DataType>
766{
768 if (!DataSharedPtr)
769 {
770 TSharedPtr<DataType> CustomData = nullptr;
771
772 CustomData = MakeShared<DataType>();
773
774 AddData(FChaosVDCustomUserDataHandle::MakeHandle<DataType>(CustomData.ToSharedRef()));
775
776 return CustomData;
777 }
778
779 return DataSharedPtr;
780}
781
782template <typename TAllocator>
788
789template <typename TAllocator>
799
800template <typename TAllocator>
806
807template <typename TAllocator>
809{
811
813 {
814 if (SolverFramesWithIDPair.Value.IsEmpty())
815 {
816 continue;
817 }
818
819 if (SolverFramesWithIDPair.Value.Num() == 1 && SolverFramesWithIDPair.Value[0].FrameCycle < GameFrameData.FirstCycle)
820 {
822 }
823 else
824 {
825 if (GameFrameData.FirstCycle > SolverFramesWithIDPair.Value[0].FrameCycle && GameFrameData.FirstCycle < SolverFramesWithIDPair.Value.Last().FrameCycle)
826 {
828 }
829 }
830 }
831}
832
833#undef UE_API
#define check(expr)
Definition AssertionMacros.h:314
FString GetTypeName()
Definition Casts.h:66
EChaosVDRecordingAttributes
Definition ChaosVDRecording.h:402
EChaosVDNetworkSyncDataRequirements
Definition ChaosVDRecording.h:187
#define UE_API
Definition ChaosVDRecording.h:25
EChaosVDSolverStageFlags
Definition ChaosVDRecording.h:131
EChaosVDSolverFrameAttributes
Definition ChaosVDRecording.h:204
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_MULTICAST_DELEGATE_TwoParams(DelegateName, Param1Type, Param2Type)
Definition DelegateCombinations.h:58
constexpr bool EnumHasAnyFlags(Enum Flags, Enum Contains)
Definition EnumClassFlags.h:35
constexpr void EnumRemoveFlags(Enum &Flags, Enum FlagsToRemove)
Definition EnumClassFlags.h:98
constexpr void EnumAddFlags(Enum &Flags, Enum FlagsToAdd)
Definition EnumClassFlags.h:91
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
#define PRAGMA_ENABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:12
#define PRAGMA_DISABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:8
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define UE_API
Definition SColorGradingComponentViewer.h:12
auto GetData(const TStringConversion< Converter, DefaultConversionSize > &Conversion) -> decltype(Conversion.Get())
Definition StringConv.h:802
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition ImplicitObject.h:111
Definition NameTypes.h:617
Definition UnrealType.h:3087
Definition ScopeRWLock.h:93
Definition ScopeRWLock.h:114
Definition Array.h:670
UE_NODEBUG UE_FORCEINLINE_HINT bool IsValidIndex(SizeType Index) const
Definition Array.h:1122
Definition UnrealString.h.inl:34
Definition RefCounting.h:454
Definition SharedPointer.h:692
TSharedRef< ObjectType, Mode > ToSharedRef() const &
Definition SharedPointer.h:1028
Definition SharedPointer.h:153
ObjectType & Get() const
Definition SharedPointer.h:474
Definition ContainerAllocationPolicies.h:894
Definition CriticalSection.h:14
Definition Class.h:480
Definition ChaosVDDataWrapperUtils.cpp:19
Definition SkeletalMeshComponent.h:307
@ false
Definition radaudio_common.h:23
Definition ChaosVDAccelerationStructureDataWrappers.h:160
Definition ChaosVDCharacterGroundConstraintDataWrappers.h:119
Definition ChaosVDRecording.h:110
UE_API void AddData(const FChaosVDCustomUserDataHandle &InData)
Definition ChaosVDRecording.cpp:20
TSharedPtr< DataType > GetData() const
Definition ChaosVDRecording.h:754
TSharedPtr< DataType > GetOrAddDefaultData()
Definition ChaosVDRecording.h:765
Definition ChaosVDDebugShapeDataWrapper.h:51
Definition ChaosVDDebugShapeDataWrapper.h:105
Definition ChaosVDDebugShapeDataWrapper.h:84
Definition ChaosVDDebugShapeDataWrapper.h:66
Definition ChaosVDRecording.h:142
TSet< int32 > ParticlesDestroyedIDs
Definition ChaosVDRecording.h:150
TMap< int32, TArray< TSharedPtr< FChaosVDParticlePairMidPhase > > > RecordedMidPhasesByParticleID
Definition ChaosVDRecording.h:149
const FChaosVDCustomFrameData & GetCustomDataHandler() const
Definition ChaosVDRecording.h:162
TMap< int32, int32 > CurrentRecordedParticlesIndexes
Definition ChaosVDRecording.h:153
TArray< TSharedPtr< FChaosVDParticlePairMidPhase > > RecordedMidPhases
Definition ChaosVDRecording.h:145
TArray< TSharedPtr< FChaosVDJointConstraint > > RecordedJointConstraints
Definition ChaosVDRecording.h:146
FChaosVDCustomFrameData & GetCustomDataHandler()
Definition ChaosVDRecording.h:157
TArray< TSharedPtr< FChaosVDParticleDataWrapper > > RecordedParticlesData
Definition ChaosVDRecording.h:144
TArray< FChaosVDConstraint > RecordedConstraints
Definition ChaosVDRecording.h:147
FString StepName
Definition ChaosVDRecording.h:143
TMap< int32, TArray< FChaosVDConstraint > > RecordedConstraintsByParticleID
Definition ChaosVDRecording.h:148
Definition ChaosVDRecording.h:395
Definition ChaosVDRecording.h:387
Definition ChaosVDRecording.h:306
FChaosVDGameFrameData & operator=(const FChaosVDGameFrameData &Other)=default
double GetFrameTime() const
Definition ChaosVDRecording.h:324
PRAGMA_DISABLE_DEPRECATION_WARNINGS FChaosVDGameFrameData()=default
TMap< FName, FChaosVDTrackedTransform > RecordedNonSolverTransformsByID
Definition ChaosVDRecording.h:347
FChaosVDGameFrameData(FChaosVDGameFrameData &&Other) noexcept=default
TMap< int32, TArray< TSharedPtr< FChaosVDDebugDrawImplicitObjectDataWrapper > > > RecordedDebugDrawImplicitObjectsBySolverID
Definition ChaosVDRecording.h:368
void MarkDirty()
Definition ChaosVDRecording.h:339
bool IsDirty() const
Definition ChaosVDRecording.h:334
TMap< int32, TArray< TSharedPtr< FChaosVDDebugDrawBoxDataWrapper > > > RecordedDebugDrawBoxesBySolverID
Definition ChaosVDRecording.h:362
TMap< int32, TMap< int32, TSharedPtr< FChaosVDQueryDataWrapper > > > RecordedSceneQueriesBySolverID
Definition ChaosVDRecording.h:350
uint64 LastCycle
Definition ChaosVDRecording.h:317
const FChaosVDCustomFrameData & GetCustomDataHandler() const
Definition ChaosVDRecording.h:375
double StartTime
Definition ChaosVDRecording.h:318
FChaosVDCustomFrameData & GetCustomDataHandler()
Definition ChaosVDRecording.h:370
FChaosVDGameFrameData(const FChaosVDGameFrameData &Other)=default
PRAGMA_ENABLE_DEPRECATION_WARNINGS uint64 FirstCycle
Definition ChaosVDRecording.h:316
TMap< int32, TArray< TSharedPtr< FChaosVDAABBTreeDataWrapper > > > RecordedAABBTreesBySolverID
Definition ChaosVDRecording.h:359
TMap< int32, TArray< TSharedPtr< FChaosVDDebugDrawLineDataWrapper > > > RecordedDebugDrawLinesBySolverID
Definition ChaosVDRecording.h:364
TMap< int32, TArray< TSharedPtr< FChaosVDDebugDrawSphereDataWrapper > > > RecordedDebugDrawSpheresBySolverID
Definition ChaosVDRecording.h:366
TMap< int32, TSharedPtr< FChaosVDQueryDataWrapper > > RecordedSceneQueries
Definition ChaosVDRecording.h:353
TMap< FName, FChaosVDTrackedLocation > RecordedNonSolverLocationsByID
Definition ChaosVDRecording.h:345
TMap< int32, TSharedPtr< FChaosVDQueryDataWrapper > > RecordedSceneQueriesByQueryID
Definition ChaosVDRecording.h:356
double EndTime
Definition ChaosVDRecording.h:319
FChaosVDGameFrameData & operator=(FChaosVDGameFrameData &&Other) noexcept=default
Definition ChaosVDQueryDataWrappers.h:422
Definition ChaosVDRecording.h:416
FChaosVDGeometryDataLoaded GeometryDataLoaded
Definition ChaosVDRecording.h:727
const TMap< uint32, Chaos::FConstImplicitObjectPtr > & GetGeometryMap() const
Definition ChaosVDRecording.h:596
TMap< int32, TArray< int32 > > RecordedKeyFramesNumberPerSolver
Definition ChaosVDRecording.h:724
int32 GetAvailableSolversNumber_AssumesLocked() const
Definition ChaosVDRecording.h:424
const TMap< int32, TArray< FChaosVDSolverFrameData > > & GetAvailableSolvers_AssumesLocked() const
Definition ChaosVDRecording.h:440
FChaosVDGeometryDataLoaded & OnGeometryDataLoaded()
Definition ChaosVDRecording.h:541
std::atomic< uint64 > LastUpdatedTimeAsCycle
Definition ChaosVDRecording.h:737
bool IsLive() const
Definition ChaosVDRecording.h:624
EChaosVDRecordingAttributes GetAttributes_AssumesLocked() const
Definition ChaosVDRecording.h:660
const FChaosVDCustomFrameData & GetCustomDataHandler() const
Definition ChaosVDRecording.h:700
void GetAvailableSolverIDsAtGameFrameNumber(int32 FrameNumber, TArray< int32, TAllocator > &OutSolversID)
Definition ChaosVDRecording.h:783
FChaosVDCustomFrameData & GetCustomDataHandler()
Definition ChaosVDRecording.h:695
int32 GetAvailableTrackIDForRemapping()
Definition ChaosVDRecording.h:690
TMap< uint32, Chaos::FConstImplicitObjectPtr > ImplicitObjects
Definition ChaosVDRecording.h:730
void GetAvailableSolverIDsAtGameFrame_AssumesLocked(const FChaosVDGameFrameData &GameFrameData, TArray< int32, TAllocator > &OutSolversID)
Definition ChaosVDRecording.h:808
TSet< int32 > ReservedSolverIDs
Definition ChaosVDRecording.h:744
EChaosVDRecordingAttributes GetAttributes() const
Definition ChaosVDRecording.h:654
void GetAvailableSolverIDsAtGameFrame(const FChaosVDGameFrameData &GameFrameData, TArray< int32, TAllocator > &OutSolversID)
Definition ChaosVDRecording.h:801
TSet< int32 > SolverIDs
Definition ChaosVDRecording.h:745
void GetAvailableSolverIDsAtGameFrameNumber_AssumesLocked(int32 FrameNumber, TArray< int32, TAllocator > &OutSolversID)
Definition ChaosVDRecording.h:790
FRWLock RecordingDataLock
Definition ChaosVDRecording.h:732
void RemoveAttributes(EChaosVDRecordingAttributes Attributes)
Definition ChaosVDRecording.h:648
TMap< int32, TMap< int32, FChaosVDSolverFrameData > > GeneratedKeyFrameDataPerSolver
Definition ChaosVDRecording.h:723
TArray< FChaosVDGameFrameData > GameFrames
Definition ChaosVDRecording.h:725
TSharedPtr< FChaosVDCollisionChannelsInfoContainer > CollisionChannelsInfoContainer
Definition ChaosVDRecording.h:742
TSharedPtr< FChaosVDCollisionChannelsInfoContainer > GetCollisionChannelsInfoContainer()
Definition ChaosVDRecording.h:674
TMap< int32, TSharedPtr< FChaosVDParticleDataWrapper > > ParticlesOnCurrentGeneratedKeyframe
Definition ChaosVDRecording.h:740
TMap< int32, TArray< FChaosVDSolverFrameData > > RecordedFramesDataPerSolver
Definition ChaosVDRecording.h:722
uint64 GetLastUpdatedTimeAsCycle()
Definition ChaosVDRecording.h:669
const TArray< FChaosVDGameFrameData > & GetAvailableGameFrames_AssumesLocked() const
Definition ChaosVDRecording.h:434
void AddAttributes(EChaosVDRecordingAttributes Attributes)
Definition ChaosVDRecording.h:642
void SetIsLive(bool bNewIsLive)
Definition ChaosVDRecording.h:630
Definition ChaosVDRecording.h:211
PRAGMA_ENABLE_DEPRECATION_WARNINGS FName DebugFName
Definition ChaosVDRecording.h:220
EChaosVDSolverFrameAttributes GetAttributes() const
Definition ChaosVDRecording.h:284
FChaosVDSolverFrameData & operator=(FChaosVDSolverFrameData &&Other) noexcept=default
PRAGMA_DISABLE_DEPRECATION_WARNINGS FChaosVDSolverFrameData()=default
FChaosVDSolverFrameData(FChaosVDSolverFrameData &&Other) noexcept=default
FChaosVDCustomFrameData & GetCustomData()
Definition ChaosVDRecording.h:274
bool HasNetworkSyncData(EChaosVDNetworkSyncDataRequirements Requirements=EChaosVDNetworkSyncDataRequirements::All) const
Definition ChaosVDRecording.h:251
void RemoveAttributes(EChaosVDSolverFrameAttributes AttributesToRemove)
Definition ChaosVDRecording.h:294
FChaosVDSolverFrameData(const FChaosVDSolverFrameData &Other)=default
void AddAttributes(EChaosVDSolverFrameAttributes NewAttributes)
Definition ChaosVDRecording.h:289
int32 GetClampedNetworkTickOffset() const
Definition ChaosVDRecording.h:269
FChaosVDSolverFrameData & operator=(const FChaosVDSolverFrameData &Other)=default
const FChaosVDCustomFrameData & GetCustomData() const
Definition ChaosVDRecording.h:279
Definition ChaosVDRecording.h:175
FVector Location
Definition ChaosVDRecording.h:177
FString DebugName
Definition ChaosVDRecording.h:176
Definition ChaosVDRecording.h:181
FString DebugName
Definition ChaosVDRecording.h:182
FTransform Transform
Definition ChaosVDRecording.h:183
Definition Tuple.h:652