UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
EngineModule.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
7
8#define UE_API CHAOSVEHICLESCORE_API
9
10namespace Chaos
11{
12 struct FAllInputs;
13 class FSimModuleTree;
14
17 , public Chaos::TSimulationModuleTypeable<class FEngineSimModule,FEngineSimModuleData>
18 {
19#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
21#else
23#endif
24
25 virtual void FillSimState(ISimulationModuleBase* SimModule) override
26 {
27 check(SimModule->IsSimType<class FEngineSimModule>());
29 }
30
31 virtual void FillNetState(const ISimulationModuleBase* SimModule) override
32 {
33 check(SimModule->IsSimType<class FEngineSimModule>());
35 }
36
37 };
38
40 : public FSimOutputData
41 , public Chaos::TSimulationModuleTypeable<class FEngineSimModule,FEngineOutputData>
42 {
43 virtual FSimOutputData* MakeNewData() override { return FEngineOutputData::MakeNew(); }
44 static FSimOutputData* MakeNew() { return new FEngineOutputData(); }
45
46 UE_API virtual void FillOutputState(const ISimulationModuleBase* SimModule) override;
47 UE_API virtual void Lerp(const FSimOutputData& InCurrent, const FSimOutputData& InNext, float Alpha) override;
48#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
49 UE_API virtual FString ToString() override;
50#endif
51
52 float RPM;
53 float Torque;
54 };
55
57 {
78
80 float MaxTorque; // [N.m] The peak torque Y value in the normalized torque graph
81 uint16 MaxRPM; // [RPM] The absolute maximum RPM the engine can theoretically reach (last X value in the normalized torque graph)
82 uint16 IdleRPM; // [RPM] The RPM at which the throttle sits when the car is not moving
83 float EngineBrakeEffect; // [N.m] How much the engine slows the vehicle when the throttle is released
84
86 };
87
88 class FEngineSimModule : public FTorqueSimModule, public TSimModuleSettings<FEngineSettings>, public TSimulationModuleTypeable<FEngineSimModule>
89 {
90 public:
93
94 virtual ~FEngineSimModule() {}
95
96 virtual TSharedPtr<FModuleNetData> GenerateNetData(const int32 SimArrayIndex) const override
97 {
99 SimArrayIndex
101 , GetDebugName()
102#endif
103 );
104 }
105 virtual FSimOutputData* GenerateOutputData() const override
106 {
108 }
109
110 virtual const FString GetDebugName() const { return TEXT("Engine"); }
111
112 UE_API virtual bool GetDebugString(FString& StringOut) const override;
113
114 UE_API virtual void Simulate(float DeltaTime, const FAllInputs& Inputs, FSimModuleTree& VehicleModuleSystem) override;
115
116 inline float GetEngineIdleSpeed() const { return EngineIdleSpeed; }
117 inline float GetEngineTorque(float ThrottlePosition, float EngineRPM);
118 inline float GetTorqueFromRPM(float RPM, bool LimitToIdle = true);
119
120 protected:
121
124 bool EngineStarted; // is the engine turned off or has it been started
125
126 };
127
129 : public FSimFactoryModule<FEngineSimModuleData>
130 , public TSimulationModuleTypeable<FEngineSimModule,FEngineSimFactory>
131 , public TSimFactoryAutoRegister<FEngineSimFactory>
132
133 {
134 public:
135 FEngineSimFactory() : FSimFactoryModule(TEXT("EngineSimFactory")) {}
136 };
137
138} // namespace Chaos
139
140#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
#define UE_API
Definition SColorGradingComponentViewer.h:12
uint16_t uint16
Definition binka_ue_file_header.h:7
Definition EngineModule.h:133
FEngineSimFactory()
Definition EngineModule.h:135
Definition EngineModule.h:89
virtual TSharedPtr< FModuleNetData > GenerateNetData(const int32 SimArrayIndex) const override
Definition EngineModule.h:96
virtual ~FEngineSimModule()
Definition EngineModule.h:94
virtual UE_API bool GetDebugString(FString &StringOut) const override
Definition EngineModule.cpp:52
virtual const FString GetDebugName() const
Definition EngineModule.h:110
virtual UE_API void Simulate(float DeltaTime, const FAllInputs &Inputs, FSimModuleTree &VehicleModuleSystem) override
Definition EngineModule.cpp:20
float EngineIdleSpeed
Definition EngineModule.h:122
virtual FSimOutputData * GenerateOutputData() const override
Definition EngineModule.h:105
DEFINE_CHAOSSIMTYPENAME(FEngineSimModule)
float GetEngineTorque(float ThrottlePosition, float EngineRPM)
Definition EngineModule.cpp:60
bool EngineStarted
Definition EngineModule.h:124
float GetTorqueFromRPM(float RPM, bool LimitToIdle=true)
Definition EngineModule.cpp:70
float GetEngineIdleSpeed() const
Definition EngineModule.h:116
float MaxEngineSpeed
Definition EngineModule.h:123
Definition VehicleUtility.h:54
void AddNormalized(float Value)
Definition VehicleUtility.h:61
Definition SimulationModuleBase.h:605
Definition SimModuleTree.h:98
bool IsSimType(FName InType) const
Definition SimulationModuleBase.h:236
Definition TorqueSimModule.h:52
Definition SimulationModuleBase.h:299
Definition SimulationModuleBase.h:598
Definition SimulationModuleBase.h:113
Definition ModuleFactoryRegister.h:42
Definition SharedPointer.h:692
Definition SkeletalMeshComponent.h:307
Definition SimulationModuleBase.h:65
Definition EngineModule.h:42
float Torque
Definition EngineModule.h:53
virtual UE_API void FillOutputState(const ISimulationModuleBase *SimModule) override
Definition EngineModule.cpp:85
virtual UE_API FString ToString() override
Definition EngineModule.cpp:109
static FSimOutputData * MakeNew()
Definition EngineModule.h:44
virtual FSimOutputData * MakeNewData() override
Definition EngineModule.h:43
float RPM
Definition EngineModule.h:52
Definition EngineModule.h:57
float EngineBrakeEffect
Definition EngineModule.h:83
FEngineSettings()
Definition EngineModule.h:58
float MaxTorque
Definition EngineModule.h:80
uint16 MaxRPM
Definition EngineModule.h:81
float EngineInertia
Definition EngineModule.h:85
uint16 IdleRPM
Definition EngineModule.h:82
FNormalisedGraph TorqueCurve
Definition EngineModule.h:79
Definition EngineModule.h:18
virtual void FillSimState(ISimulationModuleBase *SimModule) override
Definition EngineModule.h:25
FEngineSimModuleData(int NodeArrayIndex, const FString &InDebugString)
Definition EngineModule.h:20
virtual void FillNetState(const ISimulationModuleBase *SimModule) override
Definition EngineModule.h:31
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