13#define UE_API CHAOSVEHICLESCORE_API
17#define TSIMMODULETYPEABLE(clazz) Chaos::TSimulationModuleTypeableExt<clazz,&FName(#clazz)>
31 struct FModuleNetData;
32 struct FSimOutputData;
33 class FClusterUnionPhysicsProxy;
34 class FCollisionContactModifier;
49 namespace EAnimationFlags
51 static uint16 AnimateNone = 0x00000000;
52 static uint16 AnimatePosition = 0x00000001;
53 static uint16 AnimateRotation = 0x00000002;
111 template <
typename T>
123 return (T&)(SetupData);
163 template<
typename _To>
173 return _To::_CHAOSTYPENAMERETRIVAL_();
177 template<
typename _To,
typename ..._Rest>
178 class TSimulationModuleTypeable;
180 template<
typename _To>
186 static_cast<_To*
>(
this)->AddType(StaticSimType());
190 return _To::_CHAOSTYPENAMERETRIVAL_();
194 template<
typename _To,
typename _From>
200 static_cast<_From*
>(
this)->AddType(StaticSimType());
204 return _To::_CHAOSTYPENAMERETRIVAL_();
208 return StaticSimType();
213 template<
class T,
class =
void>
220 : std::integral_constant<bool, true>
244 template <
typename U>
249 return U::RecurseSimType();
273 return static_cast<U*
>(
this);
282 return static_cast<const U*
>(
this);
289#define DEFINE_CHAOSSIMTYPENAME(cls) \
290 static FName _CHAOSTYPENAMERETRIVAL_() { static FName Name(#cls); return Name; }
558#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
581#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
596 template<
typename _To>
603 template <
typename T>
609#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
619 , FSimulationModuleTypeContainer::GetStaticSimType<T>().ToString()
624#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
#define check(expr)
Definition AssertionMacros.h:314
#define UE_BUILD_TEST
Definition Build.h:17
#define UE_BUILD_SHIPPING
Definition Build.h:20
@ INDEX_NONE
Definition CoreMiscDefines.h:150
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
return true
Definition ExternalRpcRegistry.cpp:601
#define DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity)
Definition LogMacros.h:361
#define UE_API
Definition SColorGradingComponentViewer.h:12
if(Failed) console_printf("Failed.\n")
Definition ClusterUnionPhysicsProxy.h:63
Definition SimulationModuleBase.h:605
FString DebugString
Definition SimulationModuleBase.h:625
TSharedPtr< Chaos::FModuleNetData > GenerateNetData(const int32 SimArrayIndex) const override
Definition SimulationModuleBase.h:614
FSimFactoryModule(const FString &DebugNameIn)
Definition SimulationModuleBase.h:607
Definition SimModuleTree.h:98
Definition SimulationModuleBase.h:227
FName GetSimType() const
Definition SimulationModuleBase.h:240
void AddType(FName InType)
Definition SimulationModuleBase.h:231
static FName GetStaticSimType()
Definition SimulationModuleBase.h:245
FName MostRecentAdd
Definition SimulationModuleBase.h:230
bool IsSimType(FName InType) const
Definition SimulationModuleBase.h:236
bool IsSimType() const
Definition SimulationModuleBase.h:257
const U * Cast() const
Definition SimulationModuleBase.h:278
U * Cast()
Definition SimulationModuleBase.h:269
TSet< FName > MyTypes
Definition SimulationModuleBase.h:229
Definition SimulationModuleBase.h:588
virtual TSharedPtr< Chaos::FModuleNetData > GenerateNetData(const int32 SimArrayIndex) const =0
DEFINE_CHAOSSIMTYPENAME(IFactoryModule)
virtual ~IFactoryModule()
Definition SimulationModuleBase.h:591
Definition SimulationModuleBase.h:299
UE_API ISimulationModuleBase * GetParent()
Definition SimulationModuleBase.cpp:48
FTransform RelativeOffsetTransform
Definition SimulationModuleBase.h:506
void SetLocalLinearVelocity(const FVector &VelocityIn)
Definition SimulationModuleBase.h:474
void SetClustered(bool IsClusteredIn)
Definition SimulationModuleBase.h:444
virtual FSimOutputData * GenerateOutputData() const
Definition SimulationModuleBase.h:490
FTransform InitialParticleTransform
Definition SimulationModuleBase.h:505
const FVector & GetLocalAngularVelocity() const
Definition SimulationModuleBase.h:477
static const int INVALID_IDX
Definition SimulationModuleBase.h:305
void SetGuid(int GuidIn)
Definition SimulationModuleBase.h:325
void SetStateFlags(eSimModuleState StateFlagsIn)
Definition SimulationModuleBase.h:344
UE_API ISimulationModuleBase * GetFirstChild()
Definition SimulationModuleBase.cpp:53
virtual void OnTermination_External()
Definition SimulationModuleBase.h:354
bool bAnimationEnabled
Definition SimulationModuleBase.h:514
UE_API void AddLocalForceAtPosition(const FVector &Force, const FVector &Position, bool bAllowSubstepping=true, bool bIsLocalForce=false, bool bLevelSlope=false, const FColor &DebugColorIn=FColor::Blue)
Definition SimulationModuleBase.cpp:13
virtual void OnConstruction_External(const Chaos::FPhysicsObjectHandle &PhysicsObject)
Definition SimulationModuleBase.h:349
FVector AnimationOffset
Definition SimulationModuleBase.h:515
virtual void Simulate(float DeltaTime, const FAllInputs &Inputs, FSimModuleTree &VehicleModuleSystem)
Definition SimulationModuleBase.h:369
const FUniqueIdx GetParticleIndex() const
Definition SimulationModuleBase.h:405
UE_API void SetAnimationData(const FName &BoneNameIn, const FVector &AnimationOffsetIn, int AnimationSetupIndexIn)
Definition SimulationModuleBase.cpp:115
FVector LocalAngularVelocity
Definition SimulationModuleBase.h:512
const FVector & GetAnimationOffset() const
Definition SimulationModuleBase.h:381
int TransformIndex
Definition SimulationModuleBase.h:502
UE_API Chaos::FPBDRigidClusteredParticleHandle * GetClusterParticle(Chaos::FClusterUnionPhysicsProxy *Proxy)
Definition SimulationModuleBase.cpp:71
void SetClusteredTransform(const FTransform &TransformIn)
Definition SimulationModuleBase.h:450
int GetGuid() const
Definition SimulationModuleBase.h:324
FSimModuleAnimationData AnimationData
Definition SimulationModuleBase.h:516
const FSimModuleAnimationData & GetAnimationData() const
Definition SimulationModuleBase.h:380
bool IsAnimationEnabled()
Definition SimulationModuleBase.h:377
const FTransform & GetComponentTransform() const
Definition SimulationModuleBase.h:457
ISimulationModuleBase()
Definition SimulationModuleBase.h:307
int SimTreeIndex
Definition SimulationModuleBase.h:500
const FTransform & GetClusteredTransform() const
Definition SimulationModuleBase.h:451
void SetTreeIndex(int TreeIndexIn)
Definition SimulationModuleBase.h:410
virtual const FString GetDebugName() const =0
void SetLocalAngularVelocity(const FVector &VelocityIn)
Definition SimulationModuleBase.h:476
void SetParticleIndex(FUniqueIdx ParticleIndexIn)
Definition SimulationModuleBase.h:404
bool bClustered
Definition SimulationModuleBase.h:513
FUniqueIdx ParticleIdx
Definition SimulationModuleBase.h:503
eSimModuleState StateFlags
Definition SimulationModuleBase.h:501
virtual TSharedPtr< FModuleNetData > GenerateNetData(const int32 NodeArrayIndex) const =0
UE_API FVehicleBlackboard * GetSimBlackboard()
Definition SimulationModuleBase.cpp:66
bool IsClustered() const
Definition SimulationModuleBase.h:445
FPBDRigidClusteredParticleHandle * CachedParticle
Definition SimulationModuleBase.h:522
const int GetTransformIndex() const
Definition SimulationModuleBase.h:399
virtual void DrawDebugInfo()
Definition SimulationModuleBase.h:388
FVector AppliedForce
Definition SimulationModuleBase.h:519
UE_API void AddForceAtCOMPosition(const FVector &Force, const FVector &OffsetFromCOM=FVector::ZeroVector, bool bAllowSubstepping=true, bool bLevelSlope=false, const FColor &DebugColorIn=FColor::Blue)
Definition SimulationModuleBase.cpp:22
int Guid
Definition SimulationModuleBase.h:520
virtual void OnContactModification(Chaos::FCollisionContactModifier &Modifier, IPhysicsProxyBase *Proxy)
Definition SimulationModuleBase.h:364
virtual void Animate()
Definition SimulationModuleBase.h:374
FSimModuleTree * SimModuleTree
Definition SimulationModuleBase.h:499
virtual UE_API bool GetDebugString(FString &StringOut) const
Definition SimulationModuleBase.cpp:122
const FTransform & GetIntactTransform() const
Definition SimulationModuleBase.h:463
const FTransform & GetInitialParticleTransform() const
Definition SimulationModuleBase.h:454
virtual ~ISimulationModuleBase()
Definition SimulationModuleBase.h:322
UE_API const FTransform & GetParentRelativeTransform() const
Definition SimulationModuleBase.cpp:130
UE_API void AddLocalForce(const FVector &Force, bool bAllowSubstepping=true, bool bIsLocalForce=false, bool bLevelSlope=false, const FColor &DebugColorIn=FColor::Blue)
Definition SimulationModuleBase.cpp:31
virtual void Simulate(IPhysicsProxyBase *Proxy, Chaos::FPBDRigidParticleHandle *ParticleHandle, float DeltaTime, const FAllInputs &Inputs, FSimModuleTree &VehicleModuleSystem)
Definition SimulationModuleBase.h:359
void SetAnimationEnabled(bool bInEnabled)
Definition SimulationModuleBase.h:376
FTransform ClusteredCOMRelativeTransform
Definition SimulationModuleBase.h:509
const FVector & GetLocalLinearVelocity() const
Definition SimulationModuleBase.h:475
void SetIntactTransform(const FTransform &TransformIn)
Definition SimulationModuleBase.h:462
void SetSimModuleTree(FSimModuleTree *SimModuleTreeIn)
Definition SimulationModuleBase.h:416
FTransform ComponentTransform
Definition SimulationModuleBase.h:507
const FName & GetBoneName() const
Definition SimulationModuleBase.h:382
DEFINE_CHAOSSIMTYPENAME(ISimulationModuleBase)
virtual bool IsBehaviourType(eSimModuleTypeFlags InType) const =0
int GetTreeIndex() const
Definition SimulationModuleBase.h:411
int GetAnimationSetupIndex()
Definition SimulationModuleBase.h:383
bool IsInitialized
Definition SimulationModuleBase.h:464
FVector LocalLinearVelocity
Definition SimulationModuleBase.h:511
UE_API void AddLocalTorque(const FVector &Torque, bool bAllowSubstepping=true, bool bAccelChangeIn=true, const FColor &DebugColorIn=FColor::Magenta)
Definition SimulationModuleBase.cpp:40
void SetComponentTransform(const FTransform &TransformIn)
Definition SimulationModuleBase.h:456
UE_API Chaos::FPBDRigidParticleHandle * GetParticleFromUniqueIndex(int32 ParticleUniqueIdx, TArray< Chaos::FPBDRigidParticleHandle * > &Particles)
Definition SimulationModuleBase.cpp:99
void SetTransformIndex(int TransformIndexIn)
Definition SimulationModuleBase.h:398
virtual bool IsEnabled() const
Definition SimulationModuleBase.h:339
void SetInitialParticleTransform(const FTransform &TransformIn)
Definition SimulationModuleBase.h:453
FTransform IntactCOMRelativeTransform
Definition SimulationModuleBase.h:510
const FVector & GetAppliedForce()
Definition SimulationModuleBase.h:485
Definition ParticleHandle.h:987
Definition SimulationModuleBase.h:598
Definition SimulationModuleBase.h:113
FORCEINLINE T & AccessSetup()
Definition SimulationModuleBase.h:121
TSimModuleSettings(const T &SetupIn)
Definition SimulationModuleBase.h:116
FORCEINLINE const T & Setup() const
Definition SimulationModuleBase.h:126
Definition SimulationModuleBase.h:165
TSimulationModuleTypeableBase()
Definition SimulationModuleBase.h:167
static FName StaticSimTypeBase()
Definition SimulationModuleBase.h:171
static FName RecurseSimType()
Definition SimulationModuleBase.h:206
static FName StaticSimType()
Definition SimulationModuleBase.h:202
TSimulationModuleTypeable()
Definition SimulationModuleBase.h:198
TSimulationModuleTypeable()
Definition SimulationModuleBase.h:184
static FName StaticSimType()
Definition SimulationModuleBase.h:188
Definition ModuleFactoryRegister.h:42
Definition Archive.h:1208
Definition NameTypes.h:617
Definition VehicleBlackboard.h:19
Definition PhysicsProxyBase.h:97
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition SkeletalMeshComponent.h:307
const FName SteeringControlName("Steering")
const FName PitchControlName("Pitch")
const FName ChangeDownControlName("ChangeDown")
const FName ClutchControlName("Clutch")
EWheelAxis
Definition SimulationModuleBase.h:151
@ Y
Definition SimulationModuleBase.h:153
@ X
Definition SimulationModuleBase.h:152
const FName ReverseControlName("Reverse")
const FName YawControlName("Yaw")
const FName RollControlName("Roll")
eSimModuleTypeFlags
Definition SimulationModuleBase.h:143
@ TorqueBased
Definition SimulationModuleBase.h:146
@ Velocity
Definition SimulationModuleBase.h:147
@ NonFunctional
Definition SimulationModuleBase.h:144
@ Raycast
Definition SimulationModuleBase.h:145
eSimModuleState
Definition SimulationModuleBase.h:137
@ Disabled
Definition SimulationModuleBase.h:138
@ Enabled
Definition SimulationModuleBase.h:139
constexpr bool TSimModuleTypeIsRecursive_v
Definition SimulationModuleBase.h:224
const FName BoostControlName("Boost")
const FName ThrottleControlName("Throttle")
const FName HandbrakeControlName("Handbrake")
const FName BrakeControlName("Brake")
const FName ChangeUpControlName("ChangeUp")
Definition SimulationModuleBase.h:77
FCreatedModules(const FName &InSimType, int InGuid, int InTreeIndex)
Definition SimulationModuleBase.h:78
int TreeIndex
Definition SimulationModuleBase.h:85
int Guid
Definition SimulationModuleBase.h:84
const FName & SimType
Definition SimulationModuleBase.h:83
Definition SimulationModuleBase.h:57
float Distance
Definition SimulationModuleBase.h:60
FVector ImpactPoint
Definition SimulationModuleBase.h:59
int SimIndex
Definition SimulationModuleBase.h:58
bool bBlockingHit
Definition SimulationModuleBase.h:61
Definition SimulationModuleBase.h:529
virtual bool IsDefaultState()
Definition SimulationModuleBase.h:551
virtual void FillSimState(ISimulationModuleBase *SimModule)=0
virtual void Lerp(const float LerpFactor, const FModuleNetData &Max, const FModuleNetData &MaxValue)=0
virtual void DeltaSerialize(FArchive &Ar, const FModuleNetData *Previous)
Definition SimulationModuleBase.h:541
int SimArrayIndex
Definition SimulationModuleBase.h:556
virtual void ApplyDefaultState()
Definition SimulationModuleBase.h:554
DEFINE_CHAOSSIMTYPENAME(FModuleNetData)
virtual void Serialize(FArchive &Ar)=0
FString DebugString
Definition SimulationModuleBase.h:560
virtual void FillNetState(const ISimulationModuleBase *SimModule)=0
virtual FString ToString() const =0
FModuleNetData(int InSimArrayIndex, const FString &InDebugString=FString())
Definition SimulationModuleBase.h:531
virtual ~FModuleNetData()
Definition SimulationModuleBase.h:538
virtual void DeltaSerializeWithStash(FArchive &Ar, const FModuleNetData *Previous, TMap< FName, uint32 > &InOutSerializationStash)
Definition SimulationModuleBase.h:542
Definition PhysicsObjectInternal.h:16
Definition SimulationModuleBase.h:89
FQuat CombinedRotation
Definition SimulationModuleBase.h:103
int AnimationSetupIndex
Definition SimulationModuleBase.h:104
FRotator AnimationRotOffset
Definition SimulationModuleBase.h:102
FVector AnimationLocOffset
Definition SimulationModuleBase.h:101
FName BoneName
Definition SimulationModuleBase.h:99
uint16 AnimFlags
Definition SimulationModuleBase.h:100
FSimModuleAnimationData()
Definition SimulationModuleBase.h:90
Definition SimulationModuleBase.h:567
DEFINE_CHAOSSIMTYPENAME(FSimOutputData)
virtual UE_API void FillOutputState(const ISimulationModuleBase *SimModule)
Definition SimulationModuleBase.cpp:143
int ModuleGuid
Definition SimulationModuleBase.h:579
FString DebugString
Definition SimulationModuleBase.h:583
virtual bool IsEnabled()
Definition SimulationModuleBase.h:572
virtual ~FSimOutputData()
Definition SimulationModuleBase.h:570
virtual FString ToString()
Definition SimulationModuleBase.h:582
FSimModuleAnimationData AnimationData
Definition SimulationModuleBase.h:578
bool bEnabled
Definition SimulationModuleBase.h:577
virtual FSimOutputData * MakeNewData()=0
Definition GeometryParticlesfwd.h:87
Definition SimulationModuleBase.h:216
static CORE_API const FColor Blue
Definition Color.h:754
static CORE_API const FColor Magenta
Definition Color.h:757
Definition SimulationModuleBase.h:20
float DrawForceScaling
Definition SimulationModuleBase.h:23
bool DisableForces
Definition SimulationModuleBase.h:25
bool ShowMass
Definition SimulationModuleBase.h:21
float LevelSlopeThreshold
Definition SimulationModuleBase.h:24
bool ShowForces
Definition SimulationModuleBase.h:22
static CORE_API const TVector< double > ZeroVector
Definition Vector.h:79