UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
WheelModule.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6
7#define UE_API CHAOSVEHICLESCORE_API
8
9namespace Chaos
10{
11 struct FAllInputs;
12 class FSimModuleTree;
13 class FClusterUnionPhysicsProxy;
14 struct FModuleNetData;
15
18 , public Chaos::TSimulationModuleTypeable<class FWheelSimModule,FWheelSimModuleData>
19 {
20#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
22#else
24#endif
25
26 virtual void FillSimState(ISimulationModuleBase* SimModule) override
27 {
28 check(SimModule->IsSimType<class FWheelSimModule>());
30 }
31
32 virtual void FillNetState(const ISimulationModuleBase* SimModule) override
33 {
34 check(SimModule->IsSimType<class FWheelSimModule>());
36 }
37
38 };
39
46
48 : public FSimOutputData
49 , public Chaos::TSimulationModuleTypeable<class FWheelSimModule,FWheelOutputData>
50 {
51 virtual FSimOutputData* MakeNewData() override { return FWheelOutputData::MakeNew(); }
52 static FSimOutputData* MakeNew() { return new FWheelOutputData(); }
53
54 UE_API virtual void FillOutputState(const ISimulationModuleBase* SimModule) override;
55 UE_API virtual void Lerp(const FSimOutputData& InCurrent, const FSimOutputData& InNext, float Alpha) override;
56
57#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
58 UE_API virtual FString ToString() override;
59#endif
60
63 float SlipAngle;
64 float RPM;
67
69 };
70
128
129 class FWheelSimModule : public FWheelBaseInterface, public TSimModuleSettings<FWheelSettings>, public TSimulationModuleTypeable<FWheelSimModule>
130 {
131 friend FWheelOutputData;
132 public:
134 UE_API FWheelSimModule(const FWheelSettings& Settings);
135
136 virtual TSharedPtr<FModuleNetData> GenerateNetData(const int32 SimArrayIndex) const override
137 {
139 SimArrayIndex
141 , GetDebugName()
142#endif
143 );
144 }
145
146 virtual FSimOutputData* GenerateOutputData() const override
147 {
149 }
150
151 virtual const FString GetDebugName() const { return TEXT("Wheel"); }
152
153 UE_API virtual bool GetDebugString(FString& StringOut) const override;
154
155 UE_API virtual void Simulate(float DeltaTime, const FAllInputs& Inputs, FSimModuleTree& VehicleModuleSystem) override;
156
157 UE_API virtual void Animate() override;
158
159 virtual bool IsBehaviourType(eSimModuleTypeFlags InType) const override { return (InType & TorqueBased) || (InType & Velocity); }
160
161 virtual float GetWheelRadius() const override { return Setup().Radius; }
162
163 float GetSteerAngleDegrees() const { return SteerAngleDegrees; }
164
165 FVector GetForceFromFriction() const { return ForceFromFriction; }
166
167
173
176 {
177 return AngularVelocity * Setup().Radius;
178 }
179
181 float GetEffectiveRadius() const
182 {
183 return Setup().Radius;
184 }
185
186 private:
187
188 float BrakeTorque; // [N.m]
189
190 FVector ForceFromFriction;
191 float MassPerWheel;
192 float SteerAngleDegrees;
193
194 // for output
195 bool bTouchingGround;
196 mutable bool bPrevTouchingGround;
197 float SlipAngle;
198 };
199
200
202 : public FSimFactoryModule<FWheelSimModuleData>
203 , public TSimulationModuleTypeable<FWheelSimModule,FWheelSimFactory>
204 , public TSimFactoryAutoRegister<FWheelSimFactory>
205
206 {
207 public:
208 FWheelSimFactory() : FSimFactoryModule(TEXT("WheelSimFactory")) {}
209 };
210
211} // namespace Chaos
212
213#undef UE_API
#define check(expr)
Definition AssertionMacros.h:314
#define UE_BUILD_TEST
Definition Build.h:17
#define UE_BUILD_SHIPPING
Definition Build.h:20
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
return true
Definition ExternalRpcRegistry.cpp:601
#define UE_API
Definition SColorGradingComponentViewer.h:12
Definition VehicleUtility.h:89
Definition SimulationModuleBase.h:605
Definition SimModuleTree.h:98
bool IsSimType(FName InType) const
Definition SimulationModuleBase.h:236
void SetAngularVelocity(float AngularVelocityIn)
Definition TorqueSimModule.h:80
float AngularVelocity
Definition TorqueSimModule.h:119
Definition TorqueSimModule.h:124
Definition WheelModule.h:206
FWheelSimFactory()
Definition WheelModule.h:208
Definition WheelModule.h:130
virtual UE_API bool GetDebugString(FString &StringOut) const override
Definition WheelModule.cpp:228
DEFINE_CHAOSSIMTYPENAME(FWheelSimModule)
float GetSteerAngleDegrees() const
Definition WheelModule.h:163
virtual FSimOutputData * GenerateOutputData() const override
Definition WheelModule.h:146
virtual UE_API void Simulate(float DeltaTime, const FAllInputs &Inputs, FSimModuleTree &VehicleModuleSystem) override
Definition WheelModule.cpp:25
virtual bool IsBehaviourType(eSimModuleTypeFlags InType) const override
Definition WheelModule.h:159
float GetLinearSpeed()
Definition WheelModule.h:175
virtual TSharedPtr< FModuleNetData > GenerateNetData(const int32 SimArrayIndex) const override
Definition WheelModule.h:136
virtual UE_API void Animate() override
Definition WheelModule.cpp:212
float GetEffectiveRadius() const
Definition WheelModule.h:181
FVector GetForceFromFriction() const
Definition WheelModule.h:165
void SetLinearSpeed(float LinearMetersPerSecondIn)
Definition WheelModule.h:169
virtual float GetWheelRadius() const override
Definition WheelModule.h:161
virtual const FString GetDebugName() const
Definition WheelModule.h:151
Definition SimulationModuleBase.h:299
Definition SimulationModuleBase.h:598
Definition SimulationModuleBase.h:113
FORCEINLINE const FWheelSettings & Setup() const
Definition SimulationModuleBase.h:126
Definition ModuleFactoryRegister.h:42
Definition Array.h:670
Definition SharedPointer.h:692
Definition SkeletalMeshComponent.h:307
EWheelAxis
Definition SimulationModuleBase.h:151
@ X
Definition SimulationModuleBase.h:152
eSimModuleTypeFlags
Definition SimulationModuleBase.h:143
@ TorqueBased
Definition SimulationModuleBase.h:146
@ Velocity
Definition SimulationModuleBase.h:147
@ false
Definition radaudio_common.h:23
Definition SimulationModuleBase.h:65
Definition SimulationModuleBase.h:567
Definition TorqueSimModule.h:17
virtual UE_API void FillSimState(ISimulationModuleBase *SimModule) override
Definition TorqueSimModule.cpp:106
virtual UE_API void FillNetState(const ISimulationModuleBase *SimModule) override
Definition TorqueSimModule.cpp:115
Definition WheelModule.h:50
virtual UE_API void FillOutputState(const ISimulationModuleBase *SimModule) override
Definition WheelModule.cpp:237
float SteeringAngleDegrees
Definition WheelModule.h:66
bool bTouchingGround
Definition WheelModule.h:61
float AngularPositionDegrees
Definition WheelModule.h:65
float SlipAngle
Definition WheelModule.h:63
float ForceIntoSurface
Definition WheelModule.h:62
virtual UE_API FString ToString() override
Definition WheelModule.cpp:276
float RPM
Definition WheelModule.h:64
virtual FSimOutputData * MakeNewData() override
Definition WheelModule.h:51
static FSimOutputData * MakeNew()
Definition WheelModule.h:52
TArray< FWheelTouchChangeEvent > WheelTouchEvents
Definition WheelModule.h:68
Definition WheelModule.h:72
float AutoHandbrakeVelocityThreshold
Definition WheelModule.h:116
float SlipAngleLimit
Definition WheelModule.h:108
bool HandbrakeEnabled
Definition WheelModule.h:114
float MaxSteeringAngle
Definition WheelModule.h:118
float SlipModifier
Definition WheelModule.h:109
float FrictionMultiplier
Definition WheelModule.h:104
FVector ForceOffset
Definition WheelModule.h:125
bool ABSEnabled
Definition WheelModule.h:111
float Radius
Definition WheelModule.h:100
float MaxBrakeTorque
Definition WheelModule.h:119
float HandbrakeTorque
Definition WheelModule.h:120
bool ReverseDirection
Definition WheelModule.h:124
float MaxRotationVel
Definition WheelModule.h:122
float LateralSlipGraphMultiplier
Definition WheelModule.h:105
FGraph LateralSlipGraph
Definition WheelModule.h:107
bool SteeringEnabled
Definition WheelModule.h:113
float CorneringStiffness
Definition WheelModule.h:106
float WheelInertia
Definition WheelModule.h:102
FWheelSettings()
Definition WheelModule.h:73
float Width
Definition WheelModule.h:101
bool AutoHandbrakeEnabled
Definition WheelModule.h:115
bool TractionControlEnabled
Definition WheelModule.h:112
EWheelAxis Axis
Definition WheelModule.h:123
Definition WheelModule.h:19
FWheelSimModuleData(int NodeArrayIndex, const FString &InDebugString)
Definition WheelModule.h:21
virtual void FillSimState(ISimulationModuleBase *SimModule) override
Definition WheelModule.h:26
virtual void FillNetState(const ISimulationModuleBase *SimModule) override
Definition WheelModule.h:32
Definition WheelModule.h:41
bool bIsInContact
Definition WheelModule.h:44
FWheelTouchChangeEvent(bool IsInContact)
Definition WheelModule.h:42