Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Nov 28, 2007, 3:00:45 PM (16 years ago)
Author:
mbiber
Message:

update steering

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/steering/src/spaceship_steering.cc

    r209 r317  
    77maxSpeedLoopRightLeft) {
    88  moveForward_ = 0;
    9   brake_ = 0;
    109  rotateUp_ = 0;
    1110  rotateDown_ = 0;
     
    1413  loopRight_ = 0;
    1514  loopLeft_ = 0;
     15  brakeForward_ = 0;
     16  brakeRotate_ = 0;
     17  brakeLoop_ = 0;
    1618  speedForward_ = 0;
    1719  speedRotateUpDown_ = 0;
     
    3335    accelerationForward_ = moveForward_;
    3436    if(speedForward_ < maxSpeedForward_)
    35       speedForward_ += accelerationForward_;
     37      speedForward_ += accelerationForward_*time;
    3638    if(speedForward_ > maxSpeedForward_)
    3739      speedForward_ = maxSpeedForward_;
    3840  }
    39   else {
    40     accelerationForward_ = brake_;
     41  if(moveForward_ <= 0) {
     42    accelerationForward_ = brakeForward_;
    4143    if(speedForward_ > 0)
    42       speedForward_ -= accelerationForward_;
     44      speedForward_ -= accelerationForward_*time;
    4345    if(speedForward_ < 0)
    4446      speedForward_ = 0;
     
    4850    accelerationRotateUpDown_ = rotateUp_;
    4951    if(speedRotateUpDown_ < maxSpeedRotateUpDown_)
    50       speedRotateUpDown_ += accelerationRotateUpDown_;
     52      speedRotateUpDown_ += accelerationRotateUpDown_*time;
    5153    if(speedRotateUpDown_ > maxSpeedRotateUpDown_)
    5254      speedRotateUpDown_ = maxSpeedRotateUpDown_;
    5355  }
    54   else if(rotateDown_ > 0) {
     56  if(rotateDown_ > 0) {
    5557    accelerationRotateUpDown_ = rotateDown_;
    5658    if(speedRotateUpDown_ > -maxSpeedRotateUpDown_)
    57       speedRotateUpDown_ -= accelerationRotateUpDown_;
     59      speedRotateUpDown_ -= accelerationRotateUpDown_*time;
    5860    if(speedRotateUpDown_ < -maxSpeedRotateUpDown_)
    5961      speedRotateUpDown_ = -maxSpeedRotateUpDown_;
    6062  }
    61   else {
     63  if(rotateUp_ == 0 && rotateDown_ == 0) {
     64    accelerationRotateUpDown_ = brakeRotate_;
    6265    if(speedRotateUpDown_ > 0)
    63       speedRotateUpDown_ -= accelerationRotateUpDown_;
     66      speedRotateUpDown_ -= accelerationRotateUpDown_*time;
    6467    if(speedRotateUpDown_ < 0)
    65       speedRotateUpDown_ += accelerationRotateUpDown_;
     68      speedRotateUpDown_ += accelerationRotateUpDown_*time;
    6669  }
    6770
     
    6972    accelerationRotateRightLeft_ = rotateRight_;
    7073    if(speedRotateRightLeft_ > -maxSpeedRotateRightLeft_)
    71       speedRotateRightLeft_ -= accelerationRotateRightLeft_;
     74      speedRotateRightLeft_ -= accelerationRotateRightLeft_*time;
    7275    if(speedRotateRightLeft_ < -maxSpeedRotateRightLeft_)
    7376      speedRotateRightLeft_ = -maxSpeedRotateRightLeft_;
    7477  }
    75   else if(rotateLeft_ > 0) {
     78  if(rotateLeft_ > 0) {
    7679    accelerationRotateRightLeft_ = rotateLeft_;
    7780    if(speedRotateRightLeft_ < maxSpeedRotateRightLeft_)
    78       speedRotateRightLeft_ += accelerationRotateRightLeft_;
     81      speedRotateRightLeft_ += accelerationRotateRightLeft_*time;
    7982    if(speedRotateRightLeft_ > maxSpeedRotateRightLeft_)
    8083      speedRotateRightLeft_ = maxSpeedRotateRightLeft_;
    8184  }
    82   else {
     85  if(rotateRight_ == 0 && rotateLeft_ == 0) {
     86    accelerationRotateRightLeft_ = brakeRotate_;
    8387    if(speedRotateRightLeft_ > 0)
    84       speedRotateRightLeft_ -= accelerationRotateRightLeft_;
     88      speedRotateRightLeft_ -= accelerationRotateRightLeft_*time;
    8589    if(speedRotateRightLeft_ < 0)
    86       speedRotateRightLeft_ += accelerationRotateRightLeft_;
     90      speedRotateRightLeft_ += accelerationRotateRightLeft_*time;
    8791  }
    8892
     
    9094    accelerationLoopRightLeft_ = loopRight_;
    9195    if(speedLoopRightLeft_ < maxSpeedLoopRightLeft_)
    92       speedLoopRightLeft_ += accelerationLoopRightLeft_;
     96      speedLoopRightLeft_ += accelerationLoopRightLeft_*time;
    9397    if(speedLoopRightLeft_ > maxSpeedLoopRightLeft_)
    9498      speedLoopRightLeft_ = maxSpeedLoopRightLeft_;
    9599  }
    96   else if(loopLeft_ > 0) {
     100  if(loopLeft_ > 0) {
    97101    accelerationLoopRightLeft_ = loopLeft_;
    98102    if(speedLoopRightLeft_ > -maxSpeedLoopRightLeft_)
    99       speedLoopRightLeft_ -= accelerationLoopRightLeft_;
     103      speedLoopRightLeft_ -= accelerationLoopRightLeft_*time;
    100104    if(speedLoopRightLeft_ < -maxSpeedLoopRightLeft_)
    101105      speedLoopRightLeft_ = -maxSpeedLoopRightLeft_;
    102106  }
    103   else {
     107  if(loopLeft_ == 0 && loopRight_ == 0) {
     108    accelerationLoopRightLeft_ = brakeLoop_;
    104109    if(speedLoopRightLeft_ > 0)
    105       speedLoopRightLeft_ -= accelerationLoopRightLeft_;
     110      speedLoopRightLeft_ -= accelerationLoopRightLeft_*time;
    106111    if(speedLoopRightLeft_ < 0)
    107       speedLoopRightLeft_ += accelerationLoopRightLeft_;
     112      speedLoopRightLeft_ += accelerationLoopRightLeft_*time;
    108113  }
    109114
     
    123128void SpaceshipSteering::moveForward(float moveForward) {
    124129  moveForward_ = moveForward;
    125 }
    126 
    127 void SpaceshipSteering::brake(float brake) {
    128   brake_ = brake;
    129130}
    130131
     
    153154}
    154155
     156void SpaceshipSteering::brakeForward(float brakeForward) {
     157  brakeForward_ = brakeForward;
     158}
     159
     160void SpaceshipSteering::brakeRotate(float brakeRotate) {
     161  brakeRotate_ = brakeRotate;
     162}
     163
     164void SpaceshipSteering::brakeLoop(float brakeLoop) {
     165  brakeLoop_ = brakeLoop;
     166}
     167
    155168void SpaceshipSteering::maxSpeedForward(float maxSpeedForward) {
    156169  maxSpeedForward_ = maxSpeedForward;
Note: See TracChangeset for help on using the changeset viewer.