private void ReadControlAxes() { if (ControlManager.NoControlsPressed) { Motion.HaltEntity(); return; } float verticalDirection = ControlManager.GetAxis(VerticalAxis); float horizontalDirection = ControlManager.GetAxis(HorizontalAxis); MotionDirection direction = MotionDirection.None; if (verticalDirection > 0.0f) { if (Mathf.Abs(horizontalDirection - 0.0f) < 0.001f) { direction = MotionDirection.North; } else if (horizontalDirection > 0.0f) { direction = MotionDirection.NorthEast; } else if (horizontalDirection < 0.0f) { direction = MotionDirection.NorthWest; } } else if (verticalDirection < 0.0f) { if (Mathf.Abs(horizontalDirection - 0.0f) < 0.001f) { direction = MotionDirection.South; } else if (horizontalDirection > 0.0f) { direction = MotionDirection.SouthEast; } else if (horizontalDirection < 0.0f) { direction = MotionDirection.SouthWest; } } else if (Mathf.Abs(verticalDirection - 0.0f) < 0.001f) { if (horizontalDirection > 0.0f) { direction = MotionDirection.East; } else if (horizontalDirection < 0.0f) { direction = MotionDirection.West; } } FormattedDebugMessage(LogLevel.Info, "Vertical: {0} Horizontal: {1} D-Value: {2}", verticalDirection, horizontalDirection, direction.ToString()); Motion.RotateEntity(direction); Motion.MoveEntity(); }