static GamePadState ReadState(PlayerIndex index, GamePadDeadZone deadZone)
{
const float DeadZoneSize = 0.27f;
IntPtr device = GetDevice(index);
PadConfig c = GetConfig(index);
if (device == IntPtr.Zero || c == null)
{
return(GamePadState.InitializedState);
}
var leftStick = c.LeftStick.ReadAxisPair(device);
var rightStick = c.RightStick.ReadAxisPair(device);
GamePadThumbSticks sticks = new GamePadThumbSticks(new Vector2(leftStick.X, leftStick.Y), new Vector2(rightStick.X, rightStick.Y));
sticks.ApplyDeadZone(deadZone, DeadZoneSize);
GamePadTriggers triggers = new GamePadTriggers(c.LeftTrigger.ReadFloat(device), c.RightTrigger.ReadFloat(device));
Buttons buttonState = ReadButtons(device, c, DeadZoneSize);
buttonState |= StickToButtons(sticks.Left, Buttons.LeftThumbstickLeft, Buttons.LeftThumbstickRight, Buttons.LeftThumbstickUp, Buttons.LeftThumbstickDown, DeadZoneSize);
buttonState |= StickToButtons(sticks.Right, Buttons.RightThumbstickLeft, Buttons.RightThumbstickRight, Buttons.RightThumbstickUp, Buttons.RightThumbstickDown, DeadZoneSize);
buttonState |= TriggerToButton(triggers.Left, Buttons.LeftTrigger, DeadZoneSize);
buttonState |= TriggerToButton(triggers.Right, Buttons.RightTrigger, DeadZoneSize);
GamePadButtons buttons = new GamePadButtons(buttonState);
GamePadDPad dpad = new GamePadDPad(buttons.buttons);
GamePadState g = new GamePadState(sticks, triggers, buttons, dpad);
return(g);
}