16 public void advance(
float desiredFacing,
float amount) {
17 float absTurnRate = Math.abs(turnRate);
21 float decelTime = absTurnRate / turnAcceleration;
22 float decelDistance = absTurnRate * decelTime - 0.5f * turnAcceleration * decelTime * decelTime;
27 if (Math.signum(turnRate) == Math.signum(turnDir)) {
28 if (decelDistance >= diffWithCurrFacing) {
33 turnRate += turnDir * turnAcceleration * amount;
35 if (Math.abs(turnRate) > maxTurnRate) {
36 turnRate = maxTurnRate * Math.signum(turnRate);
41 facing += turnRate * amount;
44 if (diffWithCurrFacing < turnRate * amount * 1.5f) {
45 facing = desiredFacing;