public static float GetJoystickAngle(OuyaJoystick joystick, OuyaPlayer player) { /* returns the angle of a joystick * This is a convenience method allowing to get the joystick input and * calculate the angle at the same call * angles start at the positive joystick-x-axis and then increase conterclockwise * (x-positive-axis is 0° / y-positive axis is 90° / x-negative axis is 180° / y-negative-axis is 270°) * no joystrick input leads to return of -1 (as 0 is a real value used for the x-positive input) */ return CalculateJoystickAngle(GetJoystick(joystick, player)); }
public static Vector2 GetJoystick(OuyaJoystick joystick, OuyaPlayer player) { /* allows to easily get the input of a joystick * the input will already be checked by a preset deadzone */ switch (joystick) { case OuyaJoystick.LeftStick: switch (deadzoneType) { case DeadzoneType.AxialClip: return CheckDeadzoneAxial(GetAxis(OuyaAxis.LX, player), GetAxis(OuyaAxis.LY, player), deadzoneRadius); case DeadzoneType.CircularClip: return CheckDeadzoneCircular(GetAxis(OuyaAxis.LX, player), GetAxis(OuyaAxis.LY, player), deadzoneRadius); case DeadzoneType.CircularMap: return CheckDeadzoneRescaled(GetAxis(OuyaAxis.LX, player), GetAxis(OuyaAxis.LY, player), deadzoneRadius); default: return Vector2.zero; } case OuyaJoystick.RightStick: switch (deadzoneType) { case DeadzoneType.AxialClip: return CheckDeadzoneAxial(GetAxis(OuyaAxis.RX, player), GetAxis(OuyaAxis.RY, player), deadzoneRadius); case DeadzoneType.CircularClip: return CheckDeadzoneCircular(GetAxis(OuyaAxis.RX, player), GetAxis(OuyaAxis.RY, player), deadzoneRadius); case DeadzoneType.CircularMap: return CheckDeadzoneRescaled(GetAxis(OuyaAxis.RX, player), GetAxis(OuyaAxis.RY, player), deadzoneRadius); default: return Vector2.zero; } case OuyaJoystick.DPad: switch (deadzoneType) { case DeadzoneType.AxialClip: return CheckDeadzoneAxial(GetAxis(OuyaAxis.DX, player), GetAxis(OuyaAxis.DY, player), deadzoneRadius); case DeadzoneType.CircularClip: return CheckDeadzoneCircular(GetAxis(OuyaAxis.DX, player), GetAxis(OuyaAxis.DY, player), deadzoneRadius); case DeadzoneType.CircularMap: Vector2 dpadInput = CheckDeadzoneRescaled(GetAxis(OuyaAxis.DX, player), GetAxis(OuyaAxis.DY, player), deadzoneRadius); if (dpadInput.x > 1f) dpadInput.x = 1; else if (dpadInput.x < -1) dpadInput.x = -1; if (dpadInput.y > 1f) dpadInput.y = 1; else if (dpadInput.y < -1) dpadInput.y = -1; return dpadInput; default: return Vector2.zero; } default: return Vector2.zero; } }