Add engine settings to WheeledVehicle
This commit is contained in:
@@ -78,6 +78,16 @@ void WheeledVehicle::SetWheels(const Array<Wheel>& value)
|
||||
}
|
||||
}
|
||||
|
||||
WheeledVehicle::EngineSettings WheeledVehicle::GetEngine() const
|
||||
{
|
||||
return _engine;
|
||||
}
|
||||
|
||||
void WheeledVehicle::SetEngine(const EngineSettings& value)
|
||||
{
|
||||
_engine = value;
|
||||
}
|
||||
|
||||
WheeledVehicle::GearboxSettings WheeledVehicle::GetGearbox() const
|
||||
{
|
||||
return _gearbox;
|
||||
@@ -395,10 +405,9 @@ void WheeledVehicle::Setup()
|
||||
|
||||
// Engine
|
||||
PxVehicleEngineData engine;
|
||||
// TODO: expose Engine options
|
||||
engine.mMOI = M2ToCm2(1.0f);
|
||||
engine.mPeakTorque = M2ToCm2(500.0f);
|
||||
engine.mMaxOmega = RpmToRadPerS(6000.0f);
|
||||
engine.mMOI = M2ToCm2(_engine.MOI);
|
||||
engine.mPeakTorque = M2ToCm2(_engine.MaxTorque);
|
||||
engine.mMaxOmega = RpmToRadPerS(_engine.MaxRotationSpeed);
|
||||
engine.mDampingRateFullThrottle = M2ToCm2(0.15f);
|
||||
engine.mDampingRateZeroThrottleClutchEngaged = M2ToCm2(2.0f);
|
||||
engine.mDampingRateZeroThrottleClutchDisengaged = M2ToCm2(0.35f);
|
||||
@@ -545,6 +554,7 @@ void WheeledVehicle::Serialize(SerializeStream& stream, const void* otherObj)
|
||||
SERIALIZE_MEMBER(DriveType, _driveType);
|
||||
SERIALIZE_MEMBER(Wheels, _wheels);
|
||||
SERIALIZE(UseReverseAsBrake);
|
||||
SERIALIZE_MEMBER(Engine, _engine);
|
||||
SERIALIZE_MEMBER(Gearbox, _gearbox);
|
||||
}
|
||||
|
||||
@@ -555,6 +565,7 @@ void WheeledVehicle::Deserialize(DeserializeStream& stream, ISerializeModifier*
|
||||
DESERIALIZE_MEMBER(DriveType, _driveType);
|
||||
DESERIALIZE_MEMBER(Wheels, _wheels);
|
||||
DESERIALIZE(UseReverseAsBrake);
|
||||
DESERIALIZE_MEMBER(Engine, _engine);
|
||||
DESERIALIZE_MEMBER(Gearbox, _gearbox);
|
||||
}
|
||||
|
||||
|
||||
@@ -50,6 +50,35 @@ public:
|
||||
API_FIELD() float SwitchTime = 0.5f;
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Vehicle engine settings.
|
||||
/// </summary>
|
||||
API_STRUCT() struct EngineSettings : ISerializable
|
||||
{
|
||||
DECLARE_SCRIPTING_TYPE_MINIMAL(EngineSettings);
|
||||
API_AUTO_SERIALIZATION();
|
||||
|
||||
/// <summary>
|
||||
/// If enabled the vehicle gears will be changes automatically, otherwise it's fully manual.
|
||||
/// </summary>
|
||||
API_FIELD() bool AutoGear = true;
|
||||
|
||||
/// <summary>
|
||||
/// Moment of inertia of the engine around the axis of rotation. Specified in kilograms metres-squared (kg m^2).
|
||||
/// </summary>
|
||||
API_FIELD() float MOI = 1.0f;
|
||||
|
||||
/// <summary>
|
||||
/// Maximum torque available to apply to the engine when the accelerator pedal is at maximum. Specified in kilograms metres-squared per second-squared (kg m^2 s^-2).
|
||||
/// </summary>
|
||||
API_FIELD() float MaxTorque = 500.0f;
|
||||
|
||||
/// <summary>
|
||||
/// Maximum rotation speed of the engine (Revolutions Per Minute is the number of turns in one minute).
|
||||
/// </summary>
|
||||
API_FIELD() float MaxRotationSpeed = 6000.0f;
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Vehicle wheel types.
|
||||
/// </summary>
|
||||
@@ -147,8 +176,9 @@ private:
|
||||
DriveTypes _driveType = DriveTypes::Drive4W, _driveTypeCurrent;
|
||||
Array<WheelData, FixedAllocation<20>> _wheelsData;
|
||||
float _throttle = 0.0f, _steering = 0.0f, _brake = 0.0f, _handBrake = 0.0f;
|
||||
GearboxSettings _gearbox;
|
||||
Array<Wheel> _wheels;
|
||||
GearboxSettings _gearbox;
|
||||
EngineSettings _engine;
|
||||
|
||||
public:
|
||||
|
||||
@@ -178,6 +208,16 @@ public:
|
||||
/// </summary>
|
||||
API_PROPERTY() void SetWheels(const Array<Wheel>& value);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the vehicle engine settings.
|
||||
/// </summary>
|
||||
API_PROPERTY(Attributes="EditorOrder(3), EditorDisplay(\"Vehicle\")") EngineSettings GetEngine() const;
|
||||
|
||||
/// <summary>
|
||||
/// Sets the vehicle engine settings.
|
||||
/// </summary>
|
||||
API_PROPERTY() void SetEngine(const EngineSettings& value);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the vehicle gearbox settings.
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user