public static GamePadState GetState(PlayerIndex playerIndex, GamePadDeadZone deadZone)
            {
                IntPtr gamePadStatePointer = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(GamePadState.RawState)));
                uint   result = Imports.XInputGetState((uint)playerIndex, gamePadStatePointer);

                GamePadState.RawState state = (GamePadState.RawState)Marshal.PtrToStructure(gamePadStatePointer, typeof(GamePadState.RawState));
                return(new GamePadState(result == (uint)Imports.Constants.Success, state, deadZone));
            }
Example #2
0
 internal GamePadState(
     bool isConnected,
     GamePadState.RawState rawState,
     GamePadDeadZone deadZone)
 {
     this.isConnected = isConnected;
     if (!isConnected)
     {
         rawState.dwPacketNumber        = 0U;
         rawState.Gamepad.wButtons      = (ushort)0;
         rawState.Gamepad.bLeftTrigger  = (byte)0;
         rawState.Gamepad.bRightTrigger = (byte)0;
         rawState.Gamepad.sThumbLX      = (short)0;
         rawState.Gamepad.sThumbLY      = (short)0;
         rawState.Gamepad.sThumbRX      = (short)0;
         rawState.Gamepad.sThumbRY      = (short)0;
     }
     this.packetNumber = rawState.dwPacketNumber;
     this.buttons      = new GamePadButtons(((int)rawState.Gamepad.wButtons & 16) != 0 ? ButtonState.Pressed : ButtonState.Released, ((int)rawState.Gamepad.wButtons & 32) != 0 ? ButtonState.Pressed : ButtonState.Released, ((int)rawState.Gamepad.wButtons & 64) != 0 ? ButtonState.Pressed : ButtonState.Released, ((int)rawState.Gamepad.wButtons & 128) != 0 ? ButtonState.Pressed : ButtonState.Released, ((int)rawState.Gamepad.wButtons & 256) != 0 ? ButtonState.Pressed : ButtonState.Released, ((int)rawState.Gamepad.wButtons & 512) != 0 ? ButtonState.Pressed : ButtonState.Released, ((int)rawState.Gamepad.wButtons & 1024) != 0 ? ButtonState.Pressed : ButtonState.Released, ((int)rawState.Gamepad.wButtons & 4096) != 0 ? ButtonState.Pressed : ButtonState.Released, ((int)rawState.Gamepad.wButtons & 8192) != 0 ? ButtonState.Pressed : ButtonState.Released, ((int)rawState.Gamepad.wButtons & 16384) != 0 ? ButtonState.Pressed : ButtonState.Released, ((int)rawState.Gamepad.wButtons & 32768) != 0 ? ButtonState.Pressed : ButtonState.Released);
     this.dPad         = new GamePadDPad(((int)rawState.Gamepad.wButtons & 1) != 0 ? ButtonState.Pressed : ButtonState.Released, ((int)rawState.Gamepad.wButtons & 2) != 0 ? ButtonState.Pressed : ButtonState.Released, ((int)rawState.Gamepad.wButtons & 4) != 0 ? ButtonState.Pressed : ButtonState.Released, ((int)rawState.Gamepad.wButtons & 8) != 0 ? ButtonState.Pressed : ButtonState.Released);
     this.thumbSticks  = new GamePadThumbSticks(Utils.ApplyLeftStickDeadZone(rawState.Gamepad.sThumbLX, rawState.Gamepad.sThumbLY, deadZone), Utils.ApplyRightStickDeadZone(rawState.Gamepad.sThumbRX, rawState.Gamepad.sThumbRY, deadZone));
     this.triggers     = new GamePadTriggers(Utils.ApplyTriggerDeadZone(rawState.Gamepad.bLeftTrigger, deadZone), Utils.ApplyTriggerDeadZone(rawState.Gamepad.bRightTrigger, deadZone));
 }