浏览代码

Added steering return to Vehicle.

It happens in Vehicle::updateMove so it can apply to all vehicle
subclasses. It is applied to both x and y steering.
Daniel Buckmaster 13 年之前
父节点
当前提交
e3cb30bb1d
共有 1 个文件被更改,包括 16 次插入0 次删除
  1. 16 0
      Engine/source/T3D/vehicles/vehicle.cpp

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

@@ -1104,6 +1104,22 @@ void Vehicle::updateMove(const Move* move)
       mSteering.y = 0;
    }
 
+   // Steering return
+   if(mDataBlock->steeringReturn > 0.0f &&
+      (!mDataBlock->powerSteering || (move->yaw == 0.0f && move->pitch == 0.0f)))
+   {
+      Point2F returnAmount(mSteering.x * mDataBlock->steeringReturn * TickSec,
+                           mSteering.y * mDataBlock->steeringReturn * TickSec);
+      if(mDataBlock->steeringReturnSpeedScale > 0.0f)
+      {
+         Point3F vel;
+         mWorldToObj.mulV(getVelocity(), &vel);
+         returnAmount += Point2F(mSteering.x * vel.y * mDataBlock->steeringReturnSpeedScale * TickSec,
+                                 mSteering.y * vel.y * mDataBlock->steeringReturnSpeedScale * TickSec);
+      }
+      mSteering -= returnAmount;
+   }
+
    // Jetting flag
    if (move->trigger[3]) {
       if (!mJetting && getEnergyLevel() >= mDataBlock->minJetEnergy)