Browse Source

Added steering centre members to VehicleData.

steeringReturn is the main control for the amount of return in
the steering. Setting it to 0 (the default) disables steering return
completely.

steeringReturnSpeedScale is a multiplier on the amount of effect that
the vehicle's velocity has on its steering return.

powerSteering can be set to eliminate the effect of steering return on
user input. Without this flag set, the user will have a harder time
steering, because the wheels try to return as they steer. If this flag
is set, steering return will not be applied while the user is actually
steering, only when they release.
Daniel Buckmaster 13 years ago
parent
commit
eae9fc36e5
2 changed files with 23 additions and 0 deletions
  1. 19 0
      Engine/source/T3D/vehicles/vehicle.cpp
  2. 4 0
      Engine/source/T3D/vehicles/vehicle.h

+ 19 - 0
Engine/source/T3D/vehicles/vehicle.cpp

@@ -172,6 +172,10 @@ VehicleData::VehicleData()
    jetEnergyDrain =  0.8f;
    minJetEnergy = 1;
 
+   steeringReturn = 0.0f;
+   steeringReturnSpeedScale = 0.01f;
+   powerSteering = false;
+
    for (S32 i = 0; i < Body::MaxSounds; i++)
       body.sound[i] = 0;
 
@@ -292,6 +296,10 @@ void VehicleData::packData(BitStream* stream)
    stream->write(jetEnergyDrain);
    stream->write(minJetEnergy);
 
+   stream->write(steeringReturn);
+   stream->write(steeringReturnSpeedScale);
+   stream->write(powerSteering);
+
    stream->writeFlag(cameraRoll);
    stream->write(cameraLag);
    stream->write(cameraDecay);
@@ -384,6 +392,10 @@ void VehicleData::unpackData(BitStream* stream)
    stream->read(&jetEnergyDrain);
    stream->read(&minJetEnergy);
 
+   stream->read(&steeringReturn);
+   stream->read(&steeringReturnSpeedScale);
+   powerSteering = stream->readFlag();
+
    cameraRoll = stream->readFlag();
    stream->read(&cameraLag);
    stream->read(&cameraDecay);
@@ -462,6 +474,13 @@ void VehicleData::initPersistFields()
    addField( "minJetEnergy", TypeF32, Offset(minJetEnergy, VehicleData),
       "Minimum vehicle energy level to begin jetting." );
 
+   addField( "steeringReturn", TypeF32, Offset(steeringReturn, VehicleData),
+      "Rate at which the vehicle's steering returns to forwards when it is moving." );
+   addField( "steeringReturnSpeedScale", TypeF32, Offset(steeringReturnSpeedScale, VehicleData),
+      "Amount of effect the vehicle's speed has on its rate of steering return." );
+   addField( "powerSteering", TypeBool, Offset(powerSteering, VehicleData),
+      "If true, steering does not auto-centre while the vehicle is being steered by its driver." );
+
    addField( "massCenter", TypePoint3F, Offset(massCenter, VehicleData),
       "Defines the vehicle's center of mass (offset from the origin of the model)." );
    addField( "massBox", TypePoint3F, Offset(massBox, VehicleData),

+ 4 - 0
Engine/source/T3D/vehicles/vehicle.h

@@ -107,6 +107,10 @@ struct VehicleData: public ShapeBaseData
    F32 jetEnergyDrain;        ///< Energy drain/tick
    F32 minJetEnergy;
 
+   F32 steeringReturn;
+   F32 steeringReturnSpeedScale;
+   bool powerSteering;
+
    ParticleEmitterData * dustEmitter;
    S32 dustID;
    F32 triggerDustHeight;  ///< height vehicle has to be under to kick up dust