private static GamePadButtons ConvertToButtons(SharpDX.XInput.GamepadButtonFlags buttonFlags,
short leftThumbX, short leftThumbY,
short rightThumbX, short rightThumbY,
byte leftTrigger,
byte rightTrigger)
{
var ret = (Buttons)0;
ret |= AddButtonIfPressed(buttonFlags, GBF.A, Buttons.A);
ret |= AddButtonIfPressed(buttonFlags, GBF.B, Buttons.B);
ret |= AddButtonIfPressed(buttonFlags, GBF.Back, Buttons.Back);
ret |= AddButtonIfPressed(buttonFlags, GBF.DPadDown, Buttons.DPadDown);
ret |= AddButtonIfPressed(buttonFlags, GBF.DPadLeft, Buttons.DPadLeft);
ret |= AddButtonIfPressed(buttonFlags, GBF.DPadRight, Buttons.DPadRight);
ret |= AddButtonIfPressed(buttonFlags, GBF.DPadUp, Buttons.DPadUp);
ret |= AddButtonIfPressed(buttonFlags, GBF.LeftShoulder, Buttons.LeftShoulder);
ret |= AddButtonIfPressed(buttonFlags, GBF.RightShoulder, Buttons.RightShoulder);
ret |= AddButtonIfPressed(buttonFlags, GBF.LeftThumb, Buttons.LeftStick);
ret |= AddButtonIfPressed(buttonFlags, GBF.RightThumb, Buttons.RightStick);
ret |= AddButtonIfPressed(buttonFlags, GBF.Start, Buttons.Start);
ret |= AddButtonIfPressed(buttonFlags, GBF.X, Buttons.X);
ret |= AddButtonIfPressed(buttonFlags, GBF.Y, Buttons.Y);
ret |= AddThumbstickButtons(leftThumbX, leftThumbY,
SharpDX.XInput.Gamepad.LeftThumbDeadZone,
Buttons.LeftThumbstickLeft,
Buttons.LeftThumbstickRight,
Buttons.LeftThumbstickUp,
Buttons.LeftThumbstickDown);
ret |= AddThumbstickButtons(rightThumbX, rightThumbY,
SharpDX.XInput.Gamepad.RightThumbDeadZone,
Buttons.RightThumbstickLeft,
Buttons.RightThumbstickRight,
Buttons.RightThumbstickUp,
Buttons.RightThumbstickDown);
if (leftTrigger >= SharpDX.XInput.Gamepad.TriggerThreshold)
ret |= Buttons.LeftTrigger;
if (rightTrigger >= SharpDX.XInput.Gamepad.TriggerThreshold)
ret |= Buttons.RightTrigger;
// Check for the hardware back button.
if (Back)
ret |= Buttons.Back;
return new GamePadButtons(ret);
}