diff --git a/Source/Engine/Physics/Actors/WheeledVehicle.cpp b/Source/Engine/Physics/Actors/WheeledVehicle.cpp index 8a206be74..558e4f98c 100644 --- a/Source/Engine/Physics/Actors/WheeledVehicle.cpp +++ b/Source/Engine/Physics/Actors/WheeledVehicle.cpp @@ -301,7 +301,6 @@ void WheeledVehicle::Setup() data.LocalOrientation = wheel.Collider->GetLocalOrientation(); PxVehicleSuspensionData suspensionData; - // TODO: expose as wheel settings const float suspensionFrequency = 7.0f; const float suspensionDampingRatio = 1.0f; suspensionData.mMaxCompression = 10.0f; @@ -318,24 +317,10 @@ void WheeledVehicle::Setup() wheelData.mRadius = wheel.Radius; wheelData.mWidth = wheel.Width; wheelData.mMOI = 0.5f * wheelData.mMass * Math::Square(wheelData.mRadius); - wheelData.mDampingRate = M2ToCm2(0.25f); - switch (wheel.Type) - { - case WheelTypes::FrontLeft: - case WheelTypes::FrontRight: - // Enable steering for the front wheels only - // TODO: expose as settings - wheelData.mMaxSteer = PI * 0.3333f; - wheelData.mMaxSteer = PI * 0.3333f; - break; - case WheelTypes::RearLeft: - case WheelTypes::ReadRight: - // Enable the handbrake for the rear wheels only - // TODO: expose as settings - wheelData.mMaxHandBrakeTorque = M2ToCm2(4000.0f); - wheelData.mMaxHandBrakeTorque = M2ToCm2(4000.0f); - break; - } + wheelData.mDampingRate = M2ToCm2(wheel.DampingRate); + wheelData.mMaxSteer = wheel.MaxSteerAngle * DegreesToRadians; + wheelData.mMaxBrakeTorque = M2ToCm2(wheel.MaxBrakeTorque); + wheelData.mMaxHandBrakeTorque = M2ToCm2(wheel.MaxHandBrakeTorque); PxVec3 centreOffset = centerOfMassOffset.transformInv(offsets[i]); float suspensionForceOffset = 0.0f; diff --git a/Source/Engine/Physics/Actors/WheeledVehicle.h b/Source/Engine/Physics/Actors/WheeledVehicle.h index 567539c04..e3e34069d 100644 --- a/Source/Engine/Physics/Actors/WheeledVehicle.h +++ b/Source/Engine/Physics/Actors/WheeledVehicle.h @@ -189,6 +189,26 @@ public: /// API_FIELD() float Width = 20.0f; + /// + /// Max steer angle that can be achieved by the wheel (in degrees). + /// + API_FIELD(Attributes="LimitAttribute(0)") float MaxSteerAngle = 0.0f; + + /// + /// Damping rate applied to wheel. Specified in kilograms metres-squared per second (kg m^2 s^-1). + /// + API_FIELD(Attributes="LimitAttribute(0)") float DampingRate = 0.25f; + + /// + /// Max brake torque that can be applied to wheel. Specified in kilograms metres-squared per second-squared (kg m^2 s^-2) + /// + API_FIELD(Attributes="LimitAttribute(0)") float MaxBrakeTorque = 1500.0f; + + /// + /// Max handbrake torque that can be applied to wheel. Specified in kilograms metres-squared per second-squared (kg m^2 s^-2) + /// + API_FIELD(Attributes="LimitAttribute(0)") float MaxHandBrakeTorque = 2000.0f; + /// /// Collider that represents the wheel shape and it's placement. Has to be attached as a child to the vehicle. Triangle mesh collider is not supported (use convex mesh or basic shapes). ///