Expose more wheel settings in vehicle

This commit is contained in:
Wojtek Figat
2021-03-29 17:07:17 +02:00
parent 4264a36dd0
commit a83ee4014e
2 changed files with 24 additions and 19 deletions

View File

@@ -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;

View File

@@ -189,6 +189,26 @@ public:
/// </summary>
API_FIELD() float Width = 20.0f;
/// <summary>
/// Max steer angle that can be achieved by the wheel (in degrees).
/// </summary>
API_FIELD(Attributes="LimitAttribute(0)") float MaxSteerAngle = 0.0f;
/// <summary>
/// Damping rate applied to wheel. Specified in kilograms metres-squared per second (kg m^2 s^-1).
/// </summary>
API_FIELD(Attributes="LimitAttribute(0)") float DampingRate = 0.25f;
/// <summary>
/// Max brake torque that can be applied to wheel. Specified in kilograms metres-squared per second-squared (kg m^2 s^-2)
/// </summary>
API_FIELD(Attributes="LimitAttribute(0)") float MaxBrakeTorque = 1500.0f;
/// <summary>
/// Max handbrake torque that can be applied to wheel. Specified in kilograms metres-squared per second-squared (kg m^2 s^-2)
/// </summary>
API_FIELD(Attributes="LimitAttribute(0)") float MaxHandBrakeTorque = 2000.0f;
/// <summary>
/// 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).
/// </summary>