private float ComputeJoystickAxisStateForGameplay(XB1Interface.XB1Interface.GamepadState padState, MyJoystickAxesEnum axis) { if (IsJoystickConnected() && IsJoystickAxisSupported(axis)) { // Input position scaled to (-1..1). float position = ComputeJoystickAxisState(padState, axis); float distance = (((int)axis) % 2 != 0) ? position : -position; // even -> neg axis if (distance > m_joystickDeadzone) { distance = (distance - m_joystickDeadzone) / (1 - m_joystickDeadzone); // Rescale distance to (0..1) outside the deadzone. return m_joystickSensitivity * (float)Math.Pow(distance, m_joystickExponent); } } return 0.0f; }
private bool IsGamepadLTriggerPressed(XB1Interface.XB1Interface.GamepadState pad, float threshold = 0.2f) { return pad.lt >= threshold; }
private float ComputeJoystickAxisState(XB1Interface.XB1Interface.GamepadState padState, MyJoystickAxesEnum axis) { float value = 0.0f; if (IsJoystickConnected() && IsJoystickAxisSupported(axis)) { switch (axis) { case MyJoystickAxesEnum.RotationXpos: case MyJoystickAxesEnum.RotationXneg: value = padState.rx; break; case MyJoystickAxesEnum.RotationYpos: case MyJoystickAxesEnum.RotationYneg: value = -padState.ry; break; case MyJoystickAxesEnum.Xpos: case MyJoystickAxesEnum.Xneg: value = padState.lx; break; case MyJoystickAxesEnum.Ypos: case MyJoystickAxesEnum.Yneg: value = -padState.ly; break; } } return value; }