11#if VEHICLE_DEBUGGING_ENABLED
25 #define NUM_SUS_AVERAGING 10
30 : SuspensionAxis(
FVector(0.f, 0.f, -1.f))
31 , SuspensionForceOffset(
FVector::ZeroVector)
32 , SuspensionMaxRaise(0.f)
33 , SuspensionMaxDrop(0.f)
37 , CompressionDamping(0.9f)
38 , ReboundDamping(0.9f)
43 , RaycastSafetyMargin(0.0f)
44 , SuspensionSmoothing(6)
46 MaxLength = FMath::Abs(SuspensionMaxRaise) + FMath::Abs(SuspensionMaxDrop);
53 MaxLength = FMath::Abs(SuspensionMaxRaise) + FMath::Abs(SuspensionMaxDrop);
59 MaxLength = FMath::Abs(SuspensionMaxRaise) + FMath::Abs(SuspensionMaxDrop);
92 return Dir.FVector::GetSafeNormal();
107 , DisplacementInput(0.f)
108 , LastDisplacement(0.f)
109 , LocalVelocity(
FVector::ZeroVector)
110 , SuspensionForce(0.f)
111 , LocalOffset(
FVector::ZeroVector)
112 , SpringDisplacement(0.f)
114 , LastSpringLength(0.f)
126 DisplacementInput =
InLength - Setup().RaycastSafetyMargin - WheelRadius;
127 DisplacementInput = FMath::Max(0.f, DisplacementInput);
128 SpringDisplacement = Setup().MaxLength - DisplacementInput;
156 LocalOffset = InOffset;
166 FVector LocalDirection = Setup().SuspensionAxis;
170 OutTrace.Start = WorldLocation - WorldDirection * (Setup().SuspensionMaxRaise + Setup().RaycastSafetyMargin);
171 OutTrace.End = WorldLocation + WorldDirection * (Setup().SuspensionMaxDrop + WheelRadius);
176 return Setup().SuspensionMaxRaise + Setup().RaycastSafetyMargin + Setup().SuspensionMaxDrop + WheelRadius;
181 float GetSpringLength();
185 return SuspensionForce;
190 FVector LocalDirection(0.f, 0.f, 1.f);
191 return InTransform.TransformVector(LocalDirection) * SuspensionForce;
196 return Setup().SuspensionMaxRaise + GetSpringLength();
206 void Simulate(
float DeltaTime);
239#if VEHICLE_DEBUGGING_ENABLED
#define UE_ENABLE_OPTIMIZATION
Definition CoreMiscDefines.h:60
#define UE_DISABLE_OPTIMIZATION
Definition CoreMiscDefines.h:59
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define NUM_SUS_AVERAGING
Definition SuspensionSystem.h:25
#define SMALL_NUMBER
Definition UnrealMathUtility.h:66
Definition SuspensionSystem.h:103
float GetTraceLength(float WheelRadius)
Definition SuspensionSystem.h:174
float LastSpringLength
Definition SuspensionSystem.h:231
float GetLastDisplacement() const
Definition SuspensionSystem.h:211
void SetLocalVelocity(const FVector &InVelocity)
Definition SuspensionSystem.h:144
float LastDisplacement
Definition SuspensionSystem.h:223
FVector LocalOffset
Definition SuspensionSystem.h:227
float GetSuspensionForce() const
Definition SuspensionSystem.h:183
float SpringDisplacement
Definition SuspensionSystem.h:228
float GetAveragingLength(const int32 LengthIndex) const
Definition SuspensionSystem.h:212
void SetAveragingLength(const int32 LengthIndex, const float InAveragingLength)
Definition SuspensionSystem.h:218
FSimpleSuspensionSim(const FSimpleSuspensionConfig *SetupIn)
Definition SuspensionSystem.h:105
float GetNormalizedLength()
Definition SuspensionSystem.h:131
float GetSuspensionOffset()
Definition SuspensionSystem.h:194
void SetSuspensionLength(float InLength, float WheelRadius)
Definition SuspensionSystem.h:124
void SetLocalRestingPosition(const FVector &InOffset)
Definition SuspensionSystem.h:154
void SetAveragingNum(const int32 InAveragingNum)
Definition SuspensionSystem.h:215
FVector GetSuspensionForceVector(const FTransform &InTransform)
Definition SuspensionSystem.h:188
void SetLastDisplacement(const float InLastDisplacement)
Definition SuspensionSystem.h:217
void SetAveragingCount(const int32 InAveragingCount)
Definition SuspensionSystem.h:214
float SuspensionForce
Definition SuspensionSystem.h:225
void SetLastSpringLength(const float InLastSpringLength)
Definition SuspensionSystem.h:216
float GetLastSpringLength() const
Definition SuspensionSystem.h:210
int32 GetAveragingNum() const
Definition SuspensionSystem.h:209
float DisplacementInput
Definition SuspensionSystem.h:222
FVector LocalVelocity
Definition SuspensionSystem.h:224
uint32 SpringIndex
Definition SuspensionSystem.h:229
int AveragingCount
Definition SuspensionSystem.h:233
int AveragingNum
Definition SuspensionSystem.h:234
void UpdateWorldRaycastLocation(const FTransform &BodyTransform, float WheelRadius, FSuspensionTrace &OutTrace)
Definition SuspensionSystem.h:164
const FVector & GetLocalRestingPosition() const
Definition SuspensionSystem.h:199
void SetLocalVelocityFromWorld(const FTransform &InWorldTransform, const FVector &InWorldVelocity)
Definition SuspensionSystem.h:149
int32 GetAveragingCount() const
Definition SuspensionSystem.h:208
void SetSpringIndex(uint32 InIndex)
Definition SuspensionSystem.h:159
Definition VehicleSystemTemplate.h:13
Definition SkeletalMeshComponent.h:307
Definition SuspensionSystem.h:28
float Swaybar
Definition SuspensionSystem.h:74
float RestingForce
Definition SuspensionSystem.h:72
float SuspensionMaxDrop
Definition SuspensionSystem.h:65
int SuspensionSmoothing
Definition SuspensionSystem.h:80
float SpringPreload
Definition SuspensionSystem.h:69
float RaycastSafetyMargin
Definition SuspensionSystem.h:78
float SpringRate
Definition SuspensionSystem.h:68
float CompressionDamping
Definition SuspensionSystem.h:70
float DampingRatio
Definition SuspensionSystem.h:76
float ReboundDamping
Definition SuspensionSystem.h:71
float WheelLoadRatio
Definition SuspensionSystem.h:77
FSimpleSuspensionConfig()
Definition SuspensionSystem.h:29
void SetSuspensionMaxDrop(float InSuspensionMaxDrop)
Definition SuspensionSystem.h:56
float MaxLength
Definition SuspensionSystem.h:66
FVector SuspensionForceOffset
Definition SuspensionSystem.h:63
FVector SuspensionAxis
Definition SuspensionSystem.h:62
float SuspensionMaxRaise
Definition SuspensionSystem.h:64
void SetSuspensionMaxRaise(float InSuspensionMaxRaise)
Definition SuspensionSystem.h:50
Definition SuspensionSystem.h:85
FVector TraceDir()
Definition SuspensionSystem.h:89
float Length()
Definition SuspensionSystem.h:95
FVector Start
Definition SuspensionSystem.h:86
FVector End
Definition SuspensionSystem.h:87
static constexpr UE_FORCEINLINE_HINT T Clamp(const T X, const T MinValue, const T MaxValue)
Definition UnrealMathUtility.h:592
T Size() const
Definition Vector.h:1716