code: public boolean tick (Pathable pable, long timestamp)
      {
          double angle;
          boolean modified = false;
  
          // if we've blown past our arrival time...
          if (timestamp >= _startStamp + _duration) {
              // ...force the angle to the destination angle
              angle = _sangle + _delta;
  
          } else {
              // otherwise, compute the angle at which we should place the pathable based on the
              // elapsed time
              long elapsed = timestamp - _startStamp;
              angle = _sangle + _delta * elapsed / _duration;
          }
  
          // determine where we should be along the path
          computePosition(_center, _xradius, _yradius, angle, _tpos);
  
          // Skip this if we are not reorienting as we follow the path.
          if (_orient != NONE) {
              // compute the pathable's new orientation
              double theta = angle + ((_delta > 0) ? Math.PI/2 : -Math.PI/2);
              int orient;
              switch (_orient) {
              default:
              case NORMAL:
                  orient = DirectionUtil.getDirection(theta);
                  // adjust it appropriately
                  orient = DirectionUtil.rotateCW(orient, 2*_orientOffset);
                  break;
  
              case FINE:
                  orient = DirectionUtil.getFineDirection(theta);
                  // adjust it appropriately
                  orient = DirectionUtil.rotateCW(orient, _orientOffset);
                  break;
              }
  
              // update the pathable's orientation if it changed
              if (pable.getOrientation() != orient) {
                  pable.setOrientation(orient);
                  modified = true;
              }
          }
  
          // update the pathable's location if it moved
          if (pable.getX() != _tpos.x || pable.getY() != _tpos.y) {
              pable.setLocation(_tpos.x, _tpos.y);
              modified = true;
          }
  
          // if we completed our path, let the sprite know
          if (angle == _sangle + _delta) {
              pable.pathCompleted(timestamp);
          }
  
          return modified;
      }
docs: documentation inherited