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)); }
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)); }