Ejemplo n.º 1
0
        private double CalculateSpeed(double speed, double acceleration, double deceleration, double maxSpeed,
                                      GestureKeys positiveKey, GestureKeys negativeKey)
        {
            if (IsAcceleratingInPositiveDirection(speed, positiveKey, negativeKey))
            {
                speed += acceleration;
            }
            else if (IsAcceleratingInNegativeDirection(speed, positiveKey, negativeKey))
            {
                speed -= acceleration;
            }
            else if (speed < 0)
            {
                speed += CalculateDeceleration(speed, deceleration);
            }
            else if (speed > 0)
            {
                speed -= CalculateDeceleration(speed, deceleration);
            }

            speed = Math.Min(maxSpeed, speed);
            speed = Math.Max(-maxSpeed, speed);

            return(speed);
        }
Ejemplo n.º 2
0
 private bool IsAcceleratingInNegativeDirection(double speed, GestureKeys positiveKey, GestureKeys negativeKey)
 {
     return(_isKeyDown[(int)negativeKey] &&
            !_isKeyDown[(int)positiveKey] &&
            speed <= 0);
 }