10#include "SimModuleTree.generated.h"
12#define UE_API CHAOSVEHICLESCORE_API
28 class ISimulationModuleBase;
29 class FClusterUnionPhysicsProxy;
54 return NewModules.Num()-1;
60 return NewModules.Num() - 1;
71 DeletedModules.Empty();
184 template <
typename T>
189 if (Node.SimModule && Node.SimModule->IsSimType<T>())
#define check(expr)
Definition AssertionMacros.h:314
#define DECLARE_STATS_GROUP(GroupDesc, GroupId, GroupCat)
Definition Stats.h:689
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UENUM(...)
Definition ObjectMacros.h:749
#define UE_API
Definition SColorGradingComponentViewer.h:12
ESimTreeProcessingOrder
Definition SimModuleTree.h:18
@ LeafFirst
Definition SimModuleTree.h:20
@ LeafFirstBFS
Definition SimModuleTree.h:22
@ ManualOverride
Definition SimModuleTree.h:19
@ RootFirst
Definition SimModuleTree.h:21
Definition SimModuleTree.h:98
ISimulationModuleBase * AccessSimModule(int Index) const
Definition SimModuleTree.h:143
UE_API int InsertNodeAbove(int AtIndex, ISimulationModuleBase *SimModule)
Definition SimModuleTree.cpp:159
FSimModuleNode & GetNode(int Index)
Definition SimModuleTree.h:153
void SetSimulationEnabled(bool bInEnabled)
Definition SimModuleTree.h:175
TArray< int > FreeList
Definition SimModuleTree.h:242
void SetSimTreeProcessingOrder(ESimTreeProcessingOrder OrderIn)
Definition SimModuleTree.h:167
FDeferredForcesModular DeferredForces
Definition SimModuleTree.h:244
int GetParent(int Index) const
Definition SimModuleTree.h:140
void Reset()
Definition SimModuleTree.h:134
~FSimModuleTree()
Definition SimModuleTree.h:128
UE_API void SetNetState(Chaos::FModuleNetDataArray &ModuleDatas)
Definition SimModuleTree.cpp:553
UE_API void GenerateReplicationStructure(Chaos::FModuleNetDataArray &NetData)
Definition SimModuleTree.cpp:528
UE_API void DeleteNodesBelow(int NodeIdx)
Definition SimModuleTree.cpp:398
UE_API int AddRoot(ISimulationModuleBase *SimModule)
Definition SimModuleTree.cpp:34
UE_API void Simulate(float DeltaTime, FAllInputs &Inputs, IPhysicsProxyBase *PhysicsProxy, Chaos::FPBDRigidParticleHandle *RootParticle)
Definition SimModuleTree.cpp:223
UE_API void OnContactModificationInternal(int NodeIndex, FCollisionContactModifier &Modifier, IPhysicsProxyBase *PhysicsProxy)
Definition SimModuleTree.cpp:385
UE_API void UpdateModuleVelocites(IPhysicsProxyBase *PhysicsProxy, Chaos::FPBDRigidParticleHandle *RootParticle, bool bWake)
Definition SimModuleTree.cpp:432
int NumActiveNodes() const
Definition SimModuleTree.h:145
bool IsValidNode(int Index) const
Definition SimModuleTree.h:144
UE_API void AppendTreeUpdates(const FSimTreeUpdates &TreeUpdates)
Definition SimModuleTree.cpp:81
UE_API int GetNextIndex()
Definition SimModuleTree.cpp:141
int GetLargestComponentIndex()
Definition SimModuleTree.h:198
const TArray< FSimModuleNode > & GetSimulationModuleTree()
Definition SimModuleTree.h:171
Chaos::FAllInputs AllInputs
Definition SimModuleTree.h:246
ESimTreeProcessingOrder GetSimTreeProcessingOrder() const
Definition SimModuleTree.h:148
bool IsEmpty() const
Definition SimModuleTree.h:139
bool bSimulationEnabled
Definition SimModuleTree.h:249
UE_API void DeleteNode(int AtIndex)
Definition SimModuleTree.cpp:185
ESimTreeProcessingOrder SimTreeProcessingOrder
Definition SimModuleTree.h:252
UE_API void InterpolateState(const float LerpFactor, Chaos::FModuleNetDataArray &LerpDatas, const Chaos::FModuleNetDataArray &MinDatas, const Chaos::FModuleNetDataArray &MaxDatas)
Definition SimModuleTree.cpp:601
bool IsSimulationEnabled()
Definition SimModuleTree.h:176
UE_API void SetSimState(const Chaos::FModuleNetDataArray &ModuleDatas)
Definition SimModuleTree.cpp:579
void SetAnimationEnabled(bool bInEnabled)
Definition SimModuleTree.h:173
bool IsAnimationEnabled()
Definition SimModuleTree.h:174
bool bAnimationEnabled
Definition SimModuleTree.h:248
const ISimulationModuleBase * GetSimModule(int Index) const
Definition SimModuleTree.h:142
FVehicleBlackboard * GetSimBlackboard()
Definition SimModuleTree.h:219
FSimModuleNode * LocateNodeByType()
Definition SimModuleTree.h:185
UE_API void OnContactModification(FCollisionContactModifier &Modifier, IPhysicsProxyBase *PhysicsProxy)
Definition SimModuleTree.cpp:255
UE_API void SimulateNode(float DeltaTime, FAllInputs &Inputs, int NodeIdx, IPhysicsProxyBase *PhysicsProxy, Chaos::FPBDRigidParticleHandle *ParticleHandle)
Definition SimModuleTree.cpp:265
UE_API int AddNodeBelow(int AtIndex, ISimulationModuleBase *SimModule)
Definition SimModuleTree.cpp:62
int GetNumNodes() const
Definition SimModuleTree.h:147
UE_API void UpdateVehicleState(Chaos::FPBDRigidParticleHandle *RootParticle)
Definition SimModuleTree.cpp:507
FDeferredForcesModular & AccessDeferredForces()
Definition SimModuleTree.h:169
FSimModuleTree()
Definition SimModuleTree.h:120
TUniquePtr< FVehicleBlackboard > SimBlackboard
Definition SimModuleTree.h:254
UE_API void GetRootNodes(TArray< int > &RootNodesOut)
Definition SimModuleTree.cpp:418
UE_API void UpdateClusterUnionTransformsIfRequired(IPhysicsProxyBase *PhysicsProxy, ISimulationModuleBase *Module)
Definition SimModuleTree.cpp:309
const TSet< int > & GetChildren(int Index) const
Definition SimModuleTree.h:141
UE_API void Reparent(int Index, int ParentIndex)
Definition SimModuleTree.cpp:39
friend class FModularVehicleBuilder
Definition SimModuleTree.h:99
UE_API void SimulateNodeBFS(float DeltaTime, FAllInputs &Inputs, const TArray< int > &RootNodes, IPhysicsProxyBase *PhysicsProxy, Chaos::FPBDRigidParticleHandle *ParticleHandle)
Definition SimModuleTree.cpp:336
const FDeferredForcesModular & GetDeferredForces() const
Definition SimModuleTree.h:170
const FVehicleState & GetVehicleState() const
Definition SimModuleTree.h:179
FVehicleState VehicleState
Definition SimModuleTree.h:251
TArray< FSimModuleNode > SimulationModuleTree
Definition SimModuleTree.h:241
Definition SimModuleTree.h:49
const TArray< FPendingModuleDeletions > & GetDeletedModules() const
Definition SimModuleTree.h:75
void RemoveNode(int Guid)
Definition SimModuleTree.h:63
int AddRoot(ISimulationModuleBase *NewSimModuleIn)
Definition SimModuleTree.h:51
const TArray< FPendingModuleAdds > & GetNewModules() const
Definition SimModuleTree.h:74
TArray< FPendingModuleDeletions > & AccessDeletedModules()
Definition SimModuleTree.h:78
int AddNodeBelow(int ParentIndex, ISimulationModuleBase *NewSimModuleIn)
Definition SimModuleTree.h:57
TArray< FPendingModuleAdds > & AccessNewModules()
Definition SimModuleTree.h:77
void ClearUpdates()
Definition SimModuleTree.h:68
Definition SimulationModuleBase.h:299
Definition ParticleHandle.h:987
Definition DeferredForcesModular.h:28
Definition GeometryCollectionPhysicsProxy.h:143
Definition VehicleBlackboard.h:19
Definition PhysicsProxyBase.h:97
UE_REWRITE SizeType Num() const
Definition Array.h:1144
Definition UniquePtr.h:107
void Reset(T *InPtr=nullptr)
Definition UniquePtr.h:346
UE_FORCEINLINE_HINT T * Get() const
Definition UniquePtr.h:324
Definition SkeletalMeshComponent.h:307
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71
Definition SimModuleTree.h:33
ISimulationModuleBase * NewSimModule
Definition SimModuleTree.h:38
int ParentIndex
Definition SimModuleTree.h:37
FPendingModuleAdds(int ParentIndexIn, ISimulationModuleBase *NewSimModuleIn)
Definition SimModuleTree.h:34
Definition SimModuleTree.h:42
FPendingModuleDeletions(int GuidIn)
Definition SimModuleTree.h:43
int Guid
Definition SimModuleTree.h:44
Definition SimModuleTree.h:103
ISimulationModuleBase * SimModule
Definition SimModuleTree.h:112
static const int INVALID_IDX
Definition SimModuleTree.h:116
bool IsValid() const
Definition SimModuleTree.h:110
TSet< int > Children
Definition SimModuleTree.h:114
FSimModuleNode()
Definition SimModuleTree.h:104
int Parent
Definition SimModuleTree.h:113
Definition SimModuleTree.h:86
FVector ForwardDir
Definition SimModuleTree.h:90
FVector AngularVelocityRad
Definition SimModuleTree.h:93
FVector Position
Definition SimModuleTree.h:88
FVector RightDir
Definition SimModuleTree.h:91
FQuat Rotation
Definition SimModuleTree.h:89
FVector LinearVelocity
Definition SimModuleTree.h:94
float ForwardSpeedKmh
Definition SimModuleTree.h:87
FVector UpDir
Definition SimModuleTree.h:92