UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
TorqueSimModule.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "VehicleUtility.h"
7
8#define UE_API CHAOSVEHICLESCORE_API
9
10namespace Chaos
11{
12 class FTorqueSimModule;
13
15 : public FModuleNetData
16 , public Chaos::TSimulationModuleTypeable<FTorqueSimModule,FTorqueSimModuleData>
17 {
18#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
20#else
22#endif
23
24 UE_API virtual void FillSimState(ISimulationModuleBase* SimModule) override;
25
26 UE_API virtual void FillNetState(const ISimulationModuleBase* SimModule) override;
27
28 virtual void Serialize(FArchive& Ar) override
29 {
30 Ar << AngularVelocity;
31 Ar << AngularPosition;
32 Ar << DriveTorque;
33 Ar << LoadTorque;
34 Ar << BrakingTorque;
35 }
36
37 UE_API virtual void Lerp(const float LerpFactor, const FModuleNetData& Min, const FModuleNetData& Max) override;
38
39#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
40 UE_API virtual FString ToString() const override;
41#endif
42
43 float AngularVelocity = 0.0f;
44 float AngularPosition = 0.0f;
45 float DriveTorque = 0.0f;
46 float LoadTorque = 0.0f;
47 float BrakingTorque = 0.0f;
48 };
49
50
51 class FTorqueSimModule : public ISimulationModuleBase, public TSimulationModuleTypeable<FTorqueSimModule>
52 {
54
55 public:
58 : DriveTorque(0.f)
59 , LoadTorque(0.f)
60 , BrakingTorque(0.f)
61 , AngularVelocity(0.f)
62 , AngularPosition(0.0f)
63 {
64 }
65
69 virtual bool IsBehaviourType(eSimModuleTypeFlags InType) const { return (InType & TorqueBased); }
70
72 float GetDriveTorque() const { return DriveTorque; }
73
75 float GetLoadTorque() const { return LoadTorque; }
76
78 float GetBrakingTorque() const { return BrakingTorque; }
79
81 float GetAngularVelocity() const { return AngularVelocity; }
82
84
86 float GetAngularPosition() const { return AngularPosition; }
87
89 float GetRPM() const { return OmegaToRPM(AngularVelocity); }
90
94 UE_API void TransmitTorque(const FSimModuleTree& BlockSystem, float PushedTorque, float BrakeTorque = 0.f, float GearingRatio = 1.0f, float ClutchSlip = 1.0f);
95
99 UE_API void IntegrateAngularVelocity(float DeltaTime, float Inertia, float MaxRotationVel = MAX_FLT);
100
105 {
106 if (SimModule && SimModule->IsBehaviourType(eSimModuleTypeFlags::TorqueBased))
107 {
108 return static_cast<FTorqueSimModule*>(SimModule);
109 }
110
111 return nullptr;
112 }
113
114 protected:
115
121 };
122
149
150
151} // namespace Chaos
152
153#undef UE_API
#define ensure( InExpression)
Definition AssertionMacros.h:464
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UE_API
Definition SColorGradingComponentViewer.h:12
#define MAX_FLT
Definition UnrealMathUtility.h:78
Definition SimModuleTree.h:98
Definition TorqueSimModule.h:52
void SetRPM(float InRPM)
Definition TorqueSimModule.h:88
FTorqueSimModule()
Definition TorqueSimModule.h:57
float GetBrakingTorque() const
Definition TorqueSimModule.h:78
float DriveTorque
Definition TorqueSimModule.h:116
UE_API void TransmitTorque(const FSimModuleTree &BlockSystem, float PushedTorque, float BrakeTorque=0.f, float GearingRatio=1.0f, float ClutchSlip=1.0f)
Definition TorqueSimModule.cpp:15
float GetLoadTorque() const
Definition TorqueSimModule.h:75
void AddAngularVelocity(float AngularVelocityIn)
Definition TorqueSimModule.h:83
static FTorqueSimModule * CastToTorqueInterface(ISimulationModuleBase *SimModule)
Definition TorqueSimModule.h:104
float AngularPosition
Definition TorqueSimModule.h:120
float GetAngularPosition() const
Definition TorqueSimModule.h:86
float BrakingTorque
Definition TorqueSimModule.h:118
virtual bool IsBehaviourType(eSimModuleTypeFlags InType) const
Definition TorqueSimModule.h:69
float GetRPM() const
Definition TorqueSimModule.h:89
void SetLoadTorque(float TorqueIn)
Definition TorqueSimModule.h:74
float GetDriveTorque() const
Definition TorqueSimModule.h:72
DEFINE_CHAOSSIMTYPENAME(FTorqueSimModule)
void SetAngularPosition(float AngularPositionIn)
Definition TorqueSimModule.h:85
float LoadTorque
Definition TorqueSimModule.h:117
void SetDriveTorque(float TorqueIn)
Definition TorqueSimModule.h:71
void SetBrakingTorque(float TorqueIn)
Definition TorqueSimModule.h:77
UE_API void IntegrateAngularVelocity(float DeltaTime, float Inertia, float MaxRotationVel=MAX_FLT)
Definition TorqueSimModule.cpp:67
void SetAngularVelocity(float AngularVelocityIn)
Definition TorqueSimModule.h:80
float AngularVelocity
Definition TorqueSimModule.h:119
float GetAngularVelocity() const
Definition TorqueSimModule.h:81
Definition TorqueSimModule.h:124
void SetSurfaceFriction(float FrictionIn)
Definition TorqueSimModule.h:136
int SuspensionSimTreeIndex
Definition TorqueSimModule.h:144
float ForceIntoSurface
Definition TorqueSimModule.h:146
virtual float GetWheelRadius() const =0
float SurfaceFriction
Definition TorqueSimModule.h:145
float GetSurfaceFriction() const
Definition TorqueSimModule.h:139
DEFINE_CHAOSSIMTYPENAME(FWheelBaseInterface)
int GetSuspensionSimTreeIndex() const
Definition TorqueSimModule.h:135
void SetSuspensionSimTreeIndex(int IndexIn)
Definition TorqueSimModule.h:134
float GetForceIntoSurface() const
Definition TorqueSimModule.h:138
void SetForceIntoSurface(float ForceIntoSurfaceIn)
Definition TorqueSimModule.h:137
FWheelBaseInterface()
Definition TorqueSimModule.h:128
Definition SimulationModuleBase.h:299
static const int INVALID_IDX
Definition SimulationModuleBase.h:305
virtual bool IsBehaviourType(eSimModuleTypeFlags InType) const =0
Definition ModuleFactoryRegister.h:42
Definition Archive.h:1208
Definition SkeletalMeshComponent.h:307
FORCEINLINE float RPMToOmega(float RPM)
Definition VehicleUtility.h:175
eSimModuleTypeFlags
Definition SimulationModuleBase.h:143
@ TorqueBased
Definition SimulationModuleBase.h:146
FORCEINLINE float OmegaToRPM(float Omega)
Definition VehicleUtility.h:181
Definition SimulationModuleBase.h:529
Definition TorqueSimModule.h:17
float AngularVelocity
Definition TorqueSimModule.h:43
virtual void Serialize(FArchive &Ar) override
Definition TorqueSimModule.h:28
float DriveTorque
Definition TorqueSimModule.h:45
FTorqueSimModuleData(int NodeArrayIndex, const FString &InDebugString)
Definition TorqueSimModule.h:19
virtual UE_API void FillSimState(ISimulationModuleBase *SimModule) override
Definition TorqueSimModule.cpp:106
float LoadTorque
Definition TorqueSimModule.h:46
float AngularPosition
Definition TorqueSimModule.h:44
virtual UE_API void FillNetState(const ISimulationModuleBase *SimModule) override
Definition TorqueSimModule.cpp:115
float BrakingTorque
Definition TorqueSimModule.h:47
virtual UE_API FString ToString() const override
Definition TorqueSimModule.cpp:138