static void ToGamePadDPad(ref GamePadDPad pad, int state) { pad._up = (ButtonState)Math.Sign((int)(state & Sdl.SDL_HAT_UP)); pad._right = (ButtonState)Math.Sign((int)(state & Sdl.SDL_HAT_RIGHT)); pad._down = (ButtonState)Math.Sign((int)(state & Sdl.SDL_HAT_DOWN)); pad._left = (ButtonState)Math.Sign((int)(state & Sdl.SDL_HAT_LEFT)); }
static GamePadState ReadState(int index, GamePadDeadZone deadZone) { const float DeadZoneSize = 0.27f; var device = devices[index]; var c = Settings[index]; if (device == IntPtr.Zero || c == null) { return(GamePadState.Default); } 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), deadZone); 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); }
public GamePadState(GamePadThumbSticks thumbs, GamePadTriggers triggers, GamePadButtons gamePadButtons, GamePadDPad dPad) { _thumbs = thumbs; _triggers = triggers; ConvertGamePadButtonsToButtons(ref gamePadButtons, out _buttons); _dPad = dPad; }
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); }
private static GamePadState PlatformGetState(int index, GamePadDeadZone leftDeadZoneMode, GamePadDeadZone rightDeadZoneMode) { if (!Gamepads.ContainsKey(index)) { return(GamePadState.Default); } var gamepadInfo = Gamepads[index]; var gdevice = gamepadInfo.Device; // Y gamepad axis is rotate between SDL and XNA var thumbSticks = new GamePadThumbSticks( new Vector2( GetFromSdlAxis(Sdl.GameController.GetAxis(gdevice, Sdl.GameController.Axis.LeftX)), GetFromSdlAxis(Sdl.GameController.GetAxis(gdevice, Sdl.GameController.Axis.LeftY)) * -1f ), new Vector2( GetFromSdlAxis(Sdl.GameController.GetAxis(gdevice, Sdl.GameController.Axis.RightX)), GetFromSdlAxis(Sdl.GameController.GetAxis(gdevice, Sdl.GameController.Axis.RightY)) * -1f ), leftDeadZoneMode, rightDeadZoneMode ); var triggers = new GamePadTriggers( GetFromSdlAxis(Sdl.GameController.GetAxis(gdevice, Sdl.GameController.Axis.TriggerLeft)), GetFromSdlAxis(Sdl.GameController.GetAxis(gdevice, Sdl.GameController.Axis.TriggerRight)) ); var buttons = new GamePadButtons( ((Sdl.GameController.GetButton(gdevice, Sdl.GameController.Button.A) == 1) ? Buttons.A : 0) | ((Sdl.GameController.GetButton(gdevice, Sdl.GameController.Button.B) == 1) ? Buttons.B : 0) | ((Sdl.GameController.GetButton(gdevice, Sdl.GameController.Button.Back) == 1) ? Buttons.Back : 0) | ((Sdl.GameController.GetButton(gdevice, Sdl.GameController.Button.Guide) == 1) ? Buttons.BigButton : 0) | ((Sdl.GameController.GetButton(gdevice, Sdl.GameController.Button.LeftShoulder) == 1) ? Buttons.LeftShoulder : 0) | ((Sdl.GameController.GetButton(gdevice, Sdl.GameController.Button.RightShoulder) == 1) ? Buttons.RightShoulder : 0) | ((Sdl.GameController.GetButton(gdevice, Sdl.GameController.Button.LeftStick) == 1) ? Buttons.LeftStick : 0) | ((Sdl.GameController.GetButton(gdevice, Sdl.GameController.Button.RightStick) == 1) ? Buttons.RightStick : 0) | ((Sdl.GameController.GetButton(gdevice, Sdl.GameController.Button.Start) == 1) ? Buttons.Start : 0) | ((Sdl.GameController.GetButton(gdevice, Sdl.GameController.Button.X) == 1) ? Buttons.X : 0) | ((Sdl.GameController.GetButton(gdevice, Sdl.GameController.Button.Y) == 1) ? Buttons.Y : 0) | ((triggers.Left > 0f) ? Buttons.LeftTrigger : 0) | ((triggers.Right > 0f) ? Buttons.RightTrigger : 0) ); var dPad = new GamePadDPad( (Sdl.GameController.GetButton(gdevice, Sdl.GameController.Button.DpadUp) == 1) ? ButtonState.Pressed : ButtonState.Released, (Sdl.GameController.GetButton(gdevice, Sdl.GameController.Button.DpadDown) == 1) ? ButtonState.Pressed : ButtonState.Released, (Sdl.GameController.GetButton(gdevice, Sdl.GameController.Button.DpadLeft) == 1) ? ButtonState.Pressed : ButtonState.Released, (Sdl.GameController.GetButton(gdevice, Sdl.GameController.Button.DpadRight) == 1) ? ButtonState.Pressed : ButtonState.Released ); var ret = new GamePadState(thumbSticks, triggers, buttons, dPad); ret.PacketNumber = gamepadInfo.PacketNumber; return(ret); }
internal GamePadState(Buttons buttons, Vector2 LeftStick, Vector2 RightStick) { _buttons = buttons; _thumbs = new GamePadThumbSticks(LeftStick, RightStick); _dPad = new GamePadDPad(); _triggers = new GamePadTriggers(); }
private static GamePadState PlatformGetState(int index, GamePadDeadZone leftDeadZoneMode, GamePadDeadZone rightDeadZoneMode) { var state = GamePadState.Default; var jcap = Joystick.GetCapabilities(index); if (jcap.IsConnected) { state.IsConnected = true; var jstate = Joystick.GetState(index); if (!GamePadCache.ContainsKey(jcap.Identifier)) { GamePadCache.Add(jcap.Identifier, Configurations.ContainsKey(jcap.Identifier) ? new GamepadTranslator(Configurations[jcap.Identifier]) : new GamepadTranslator("")); } var gpc = GamePadCache[jcap.Identifier]; Buttons buttons = (gpc.ButtonPressed("a", jstate) ? Buttons.A : 0) | (gpc.ButtonPressed("b", jstate) ? Buttons.B : 0) | (gpc.ButtonPressed("back", jstate) ? Buttons.Back : 0) | (gpc.ButtonPressed("guide", jstate) ? Buttons.BigButton : 0) | (gpc.ButtonPressed("leftshoulder", jstate) ? Buttons.LeftShoulder : 0) | (gpc.ButtonPressed("leftstick", jstate) ? Buttons.LeftStick : 0) | (gpc.ButtonPressed("rightshoulder", jstate) ? Buttons.RightShoulder : 0) | (gpc.ButtonPressed("rightstick", jstate) ? Buttons.RightStick : 0) | (gpc.ButtonPressed("start", jstate) ? Buttons.Start : 0) | (gpc.ButtonPressed("x", jstate) ? Buttons.X : 0) | (gpc.ButtonPressed("y", jstate) ? Buttons.Y : 0) | 0; var sticks = new GamePadThumbSticks( new Vector2(gpc.AxisPressed("leftx", jstate), gpc.AxisPressed("lefty", jstate)), new Vector2(gpc.AxisPressed("rightx", jstate), gpc.AxisPressed("righty", jstate)), leftDeadZoneMode, rightDeadZoneMode ); var dpad = new GamePadDPad( gpc.DpadPressed("dpup", jstate) ? ButtonState.Pressed : ButtonState.Released, gpc.DpadPressed("dpdown", jstate) ? ButtonState.Pressed : ButtonState.Released, gpc.DpadPressed("dpleft", jstate) ? ButtonState.Pressed : ButtonState.Released, gpc.DpadPressed("dpright", jstate) ? ButtonState.Pressed : ButtonState.Released ); var triggers = new GamePadTriggers( gpc.TriggerPressed("lefttrigger", jstate), gpc.TriggerPressed("righttrigger", jstate) ); state = new GamePadState(sticks, triggers, new GamePadButtons(buttons), dpad); } return(state); }
public void ValidateToGamePadDPadFromJoystickHatStates() { GamePadDPad o = new GamePadDPad(); GamePadDPad.ToGamePadDPad(ref o, JoystickHatStates.None); Assert.AreEqual(ButtonState.Released, o.Up, "For JoystickHatStates.None, o.Up = ButtonState.Released"); Assert.AreEqual(ButtonState.Released, o.Right, "For JoystickHatStates.None, o.Right = ButtonState.Released"); Assert.AreEqual(ButtonState.Released, o.Down, "For JoystickHatStates.None, o.Down = ButtonState.Released"); Assert.AreEqual(ButtonState.Released, o.Left, "For JoystickHatStates.None, o.Left = ButtonState.Released"); GamePadDPad.ToGamePadDPad(ref o, JoystickHatStates.Up); Assert.AreEqual(ButtonState.Pressed, o.Up, "For JoystickHatStates.Up, o.Up = ButtonState.Pressed"); Assert.AreEqual(ButtonState.Released, o.Right, "For JoystickHatStates.Up, o.Right = ButtonState.Released"); Assert.AreEqual(ButtonState.Released, o.Down, "For JoystickHatStates.Up, o.Down = ButtonState.Released"); Assert.AreEqual(ButtonState.Released, o.Left, "For JoystickHatStates.Up, o.Left = ButtonState.Released"); GamePadDPad.ToGamePadDPad(ref o, JoystickHatStates.RightUp); Assert.AreEqual(ButtonState.Pressed, o.Up, "For JoystickHatStates.RightUp, o.Up = ButtonState.Pressed"); Assert.AreEqual(ButtonState.Pressed, o.Right, "For JoystickHatStates.RightUp, o.Right = ButtonState.Pressed"); Assert.AreEqual(ButtonState.Released, o.Down, "For JoystickHatStates.RightUp, o.Down = ButtonState.Released"); Assert.AreEqual(ButtonState.Released, o.Left, "For JoystickHatStates.RightUp, o.Left = ButtonState.Released"); GamePadDPad.ToGamePadDPad(ref o, JoystickHatStates.Right); Assert.AreEqual(ButtonState.Released, o.Up, "For JoystickHatStates.Right, o.Up = ButtonState.Released"); Assert.AreEqual(ButtonState.Pressed, o.Right, "For JoystickHatStates.Right, o.Right = ButtonState.Pressed"); Assert.AreEqual(ButtonState.Released, o.Down, "For JoystickHatStates.Right, o.Down = ButtonState.Released"); Assert.AreEqual(ButtonState.Released, o.Left, "For JoystickHatStates.Right, o.Left = ButtonState.Released"); GamePadDPad.ToGamePadDPad(ref o, JoystickHatStates.RightDown); Assert.AreEqual(ButtonState.Released, o.Up, "For JoystickHatStates.RightDown, o.Up = ButtonState.Released"); Assert.AreEqual(ButtonState.Pressed, o.Right, "For JoystickHatStates.RightDown, o.Right = ButtonState.Pressed"); Assert.AreEqual(ButtonState.Pressed, o.Down, "For JoystickHatStates.RightDown, o.Down = ButtonState.Pressed"); Assert.AreEqual(ButtonState.Released, o.Left, "For JoystickHatStates.RightDown, o.Left = ButtonState.Released"); GamePadDPad.ToGamePadDPad(ref o, JoystickHatStates.Down); Assert.AreEqual(ButtonState.Released, o.Up, "For JoystickHatStates.Down, o.Up = ButtonState.Released"); Assert.AreEqual(ButtonState.Released, o.Right, "For JoystickHatStates.Down, o.Right = ButtonState.Released"); Assert.AreEqual(ButtonState.Pressed, o.Down, "For JoystickHatStates.Down, o.Down = ButtonState.Pressed"); Assert.AreEqual(ButtonState.Released, o.Left, "For JoystickHatStates.Down, o.Left = ButtonState.Released"); GamePadDPad.ToGamePadDPad(ref o, JoystickHatStates.LeftDown); Assert.AreEqual(ButtonState.Released, o.Up, "For JoystickHatStates.LeftDown, o.Up = ButtonState.Released"); Assert.AreEqual(ButtonState.Released, o.Right, "For JoystickHatStates.LeftDown, o.Right = ButtonState.Released"); Assert.AreEqual(ButtonState.Pressed, o.Down, "For JoystickHatStates.LeftDown, o.Down = ButtonState.Pressed"); Assert.AreEqual(ButtonState.Pressed, o.Left, "For JoystickHatStates.LeftDown, o.Left = ButtonState.Pressed"); GamePadDPad.ToGamePadDPad(ref o, JoystickHatStates.Left); Assert.AreEqual(ButtonState.Released, o.Up, "For JoystickHatStates.Left, o.Up = ButtonState.Released"); Assert.AreEqual(ButtonState.Released, o.Right, "For JoystickHatStates.Left, o.Right = ButtonState.Released"); Assert.AreEqual(ButtonState.Released, o.Down, "For JoystickHatStates.Left, o.Down = ButtonState.Released"); Assert.AreEqual(ButtonState.Pressed, o.Left, "For JoystickHatStates.Left, o.Left = ButtonState.Pressed"); GamePadDPad.ToGamePadDPad(ref o, JoystickHatStates.LeftUp); Assert.AreEqual(ButtonState.Pressed, o.Up, "For JoystickHatStates.LeftUp, o.Up = ButtonState.Pressed"); Assert.AreEqual(ButtonState.Released, o.Right, "For JoystickHatStates.LeftUp, o.Right = ButtonState.Released"); Assert.AreEqual(ButtonState.Released, o.Down, "For JoystickHatStates.LeftUp, o.Down = ButtonState.Released"); Assert.AreEqual(ButtonState.Pressed, o.Left, "For JoystickHatStates.LeftUp, o.Left = ButtonState.Pressed"); }
private static GamePadState PlatformGetState(int index, GamePadDeadZone leftDeadZoneMode, GamePadDeadZone rightDeadZoneMode) { if (!_gamepads.ContainsKey(index)) { return(index == 0 ? GetDefaultState() : GamePadState.Default); } var state = _gamepads[index].GetCurrentReading(); var sticks = new GamePadThumbSticks( new Vector2((float)state.LeftThumbstickX, (float)state.LeftThumbstickY), new Vector2((float)state.RightThumbstickX, (float)state.RightThumbstickY), leftDeadZoneMode, rightDeadZoneMode ); var triggers = new GamePadTriggers( (float)state.LeftTrigger, (float)state.RightTrigger ); Buttons buttonStates = (state.Buttons.HasFlag(WGI.GamepadButtons.A) ? Buttons.A : 0) | (state.Buttons.HasFlag(WGI.GamepadButtons.B) ? Buttons.B : 0) | ((state.Buttons.HasFlag(WGI.GamepadButtons.View) || Back) ? Buttons.Back : 0) | 0 | //BigButton is unavailable by Windows.Gaming.Input.Gamepad (state.Buttons.HasFlag(WGI.GamepadButtons.LeftShoulder) ? Buttons.LeftShoulder : 0) | (state.Buttons.HasFlag(WGI.GamepadButtons.LeftThumbstick) ? Buttons.LeftStick : 0) | (state.Buttons.HasFlag(WGI.GamepadButtons.RightShoulder) ? Buttons.RightShoulder : 0) | (state.Buttons.HasFlag(WGI.GamepadButtons.RightThumbstick) ? Buttons.RightStick : 0) | (state.Buttons.HasFlag(WGI.GamepadButtons.Menu) ? Buttons.Start : 0) | (state.Buttons.HasFlag(WGI.GamepadButtons.X) ? Buttons.X : 0) | (state.Buttons.HasFlag(WGI.GamepadButtons.Y) ? Buttons.Y : 0) | 0; // Check triggers if (triggers.Left > TriggerThreshold) { buttonStates |= Buttons.LeftTrigger; } if (triggers.Right > TriggerThreshold) { buttonStates |= Buttons.RightTrigger; } var buttons = new GamePadButtons(buttonStates); var dpad = new GamePadDPad( state.Buttons.HasFlag(WGI.GamepadButtons.DPadUp) ? ButtonState.Pressed : ButtonState.Released, state.Buttons.HasFlag(WGI.GamepadButtons.DPadDown) ? ButtonState.Pressed : ButtonState.Released, state.Buttons.HasFlag(WGI.GamepadButtons.DPadLeft) ? ButtonState.Pressed : ButtonState.Released, state.Buttons.HasFlag(WGI.GamepadButtons.DPadRight) ? ButtonState.Pressed : ButtonState.Released ); var result = new GamePadState(sticks, triggers, buttons, dpad); result.PacketNumber = (int)state.Timestamp; return(result); }
// // Summary: // Initializes a new instance of the GamePadState class using the specified // GamePadThumbSticks, GamePadTriggers, GamePadButtons, and GamePadDPad. // // Parameters: // thumbSticks: // Initial thumbstick state. // // triggers: // Initial trigger state. // // buttons: // Initial button state. // // dPad: // Initial directional pad state. public GamePadState(GamePadThumbSticks thumbSticks, GamePadTriggers triggers, GamePadButtons buttons, GamePadDPad dPad) : this() { ThumbSticks = thumbSticks; Triggers = triggers; Buttons = buttons; DPad = dPad; }
public GamePadState(GamePadThumbSticks thumbSticks, GamePadTriggers triggers, GamePadButtons buttons, GamePadDPad dPad) { this = new GamePadState(); this.ThumbSticks = thumbSticks; this.Triggers = triggers; this.Buttons = buttons; this.DPad = dPad; this.IsConnected = true; }
public void SetCurrentState(KeyboardState keyBoardState) { _keyBoardState = keyBoardState; _buttons = new GamePadButtons(_keyBoardState); _triggers = new GamePadTriggers(_keyBoardState); _thumbSticks = new GamePadThumbSticks(_keyBoardState); _dpad = new GamePadDPad(_keyBoardState); }
private static GamePadState PlatformGetState(int index, GamePadDeadZone deadZoneMode) { // If the device was disconneced then wait for // the timeout to elapsed before we test it again. if (!_connected[index] && _timeout[index] > DateTime.UtcNow.Ticks) { return(new GamePadState()); } // Try to get the controller state. SharpDX.XInput.State xistate; var controller = _controllers[index]; _connected[index] = controller.GetState(out xistate); var gamepad = xistate.Gamepad; // If the device is disconnected retry it after the // timeout period has elapsed to avoid the overhead. if (!_connected[index]) { _timeout[index] = DateTime.UtcNow.Ticks + TimeoutTicks; return(new GamePadState()); } var thumbSticks = new GamePadThumbSticks( leftPosition: ConvertThumbStick(gamepad.LeftThumbX, gamepad.LeftThumbY, SharpDX.XInput.Gamepad.LeftThumbDeadZone, deadZoneMode), rightPosition: ConvertThumbStick(gamepad.RightThumbX, gamepad.RightThumbY, SharpDX.XInput.Gamepad.RightThumbDeadZone, deadZoneMode)); var triggers = new GamePadTriggers( leftTrigger: gamepad.LeftTrigger / (float)byte.MaxValue, rightTrigger: gamepad.RightTrigger / (float)byte.MaxValue); var dpadState = new GamePadDPad( upValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadUp), downValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadDown), leftValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadLeft), rightValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadRight)); var buttons = ConvertToButtons( buttonFlags: gamepad.Buttons, leftThumbX: gamepad.LeftThumbX, leftThumbY: gamepad.LeftThumbY, rightThumbX: gamepad.RightThumbX, rightThumbY: gamepad.RightThumbY, leftTrigger: gamepad.LeftTrigger, rightTrigger: gamepad.RightTrigger); var state = new GamePadState( thumbSticks: thumbSticks, triggers: triggers, buttons: buttons, dPad: dpadState); return(state); }
public static GamePadState GetState(PlayerIndex playerIndex, GamePadDeadZone deadZoneMode) { int number = (int)playerIndex; if (number < s_numJoysticks) { IntPtr j = _sticks[number]; _state[number].buttons.A = (ButtonState)Sdl.SDL_JoystickGetButton(j, A); _state[number].buttons.B = (ButtonState)Sdl.SDL_JoystickGetButton(j, B); _state[number].buttons.X = (ButtonState)Sdl.SDL_JoystickGetButton(j, X); _state[number].buttons.Y = (ButtonState)Sdl.SDL_JoystickGetButton(j, Y); _state[number].buttons.Back = (ButtonState)Sdl.SDL_JoystickGetButton(j, Back); _state[number].buttons.Start = (ButtonState)Sdl.SDL_JoystickGetButton(j, Start); _state[number].buttons.LeftShoulder = (ButtonState)Sdl.SDL_JoystickGetButton(j, LeftShoulder); _state[number].buttons.LeftStick = (ButtonState)Sdl.SDL_JoystickGetButton(j, LeftStick); _state[number].buttons.RightShoulder = (ButtonState)Sdl.SDL_JoystickGetButton(j, RightShoulder); _state[number].buttons.RightStick = (ButtonState)Sdl.SDL_JoystickGetButton(j, RightStick); float x1 = Rescale((float)(Sdl.SDL_JoystickGetAxis(j, (int)JoystickAxis.Horizontal) + JOYSTICK_ADJUSTMENT) / JOYSTICK_SCALE); float y1 = Rescale(Sdl.SDL_JoystickGetAxis(j, (int)JoystickAxis.Vertical)); float x2 = Rescale(Sdl.SDL_JoystickGetAxis(j, (int)JoystickAxis.Axis3)); float y2 = Rescale(Sdl.SDL_JoystickGetAxis(j, (int)JoystickAxis.Axis4)); switch (deadZoneMode) { case GamePadDeadZone.IndependentAxes: _state[number].thumbSticks.left = IndependentAxisDeadZone(x1, y1); _state[number].thumbSticks.right = IndependentAxisDeadZone(x2, y2); break; case GamePadDeadZone.Circular: _state[number].thumbSticks.left = CircularAxisDeadZone(x1, y1); _state[number].thumbSticks.right = CircularAxisDeadZone(x2, y2); break; case GamePadDeadZone.None: _state[number].thumbSticks.left = new Vector2(x1, y1); _state[number].thumbSticks.right = new Vector2(x2, y2); break; } GamePadDPad.ToGamePadDPad(ref _state[number].dPad, Sdl.SDL_JoystickGetHat(j, 0)); // converts ButtonKeyState.Pressed ( = 1) to float of 1.0f // since SDL doesn't support reading the position of the trigger. Will review this later _state[number].triggers.left = (int)Sdl.SDL_JoystickGetButton(j, LeftTrigger) * 1.0f; _state[number].triggers.right = (int)Sdl.SDL_JoystickGetButton(j, RightTrigger) * 1.0f; } else { _state[number].isConnected = false; } return(_state[number]); }
// // Summary: // Initializes a new instance of the GamePadState class using the specified // GamePadThumbSticks, GamePadTriggers, GamePadButtons, and GamePadDPad. // // Parameters: // thumbSticks: // Initial thumbstick state. // // triggers: // Initial trigger state. // // buttons: // Initial button state. // // dPad: // Initial directional pad state. public GamePadState(GamePadThumbSticks thumbSticks, GamePadTriggers triggers, GamePadButtons buttons, GamePadDPad dPad) : this() { ThumbSticks = thumbSticks; Triggers = triggers; Buttons = buttons; DPad = dPad; IsConnected = true; PlatformConstruct(); }
private static GamePadState PlatformGetState(int index, GamePadDeadZone deadZoneMode) { PrepSettings(); var stateTK = OpenTK.Input.GamePad.GetState(index); if (!stateTK.IsConnected) { return(GamePadState.Default); } var sticks = new GamePadThumbSticks( new Vector2(stateTK.ThumbSticks.Left.X, stateTK.ThumbSticks.Left.Y), new Vector2(stateTK.ThumbSticks.Right.X, stateTK.ThumbSticks.Right.Y), deadZoneMode ); var triggers = new GamePadTriggers( stateTK.Triggers.Left, stateTK.Triggers.Right ); Buttons buttonStates = (stateTK.Buttons.A == OpenTK.Input.ButtonState.Pressed ? Buttons.A : 0) | (stateTK.Buttons.B == OpenTK.Input.ButtonState.Pressed ? Buttons.B : 0) | (stateTK.Buttons.Back == OpenTK.Input.ButtonState.Pressed ? Buttons.Back : 0) | (stateTK.Buttons.BigButton == OpenTK.Input.ButtonState.Pressed ? Buttons.BigButton : 0) | (stateTK.Buttons.LeftShoulder == OpenTK.Input.ButtonState.Pressed ? Buttons.LeftShoulder : 0) | (stateTK.Buttons.LeftStick == OpenTK.Input.ButtonState.Pressed ? Buttons.LeftStick : 0) | (stateTK.Buttons.RightShoulder == OpenTK.Input.ButtonState.Pressed ? Buttons.RightShoulder : 0) | (stateTK.Buttons.RightStick == OpenTK.Input.ButtonState.Pressed ? Buttons.RightStick : 0) | (stateTK.Buttons.Start == OpenTK.Input.ButtonState.Pressed ? Buttons.Start : 0) | (stateTK.Buttons.X == OpenTK.Input.ButtonState.Pressed ? Buttons.X : 0) | (stateTK.Buttons.Y == OpenTK.Input.ButtonState.Pressed ? Buttons.Y : 0) | 0; var buttons = new GamePadButtons(buttonStates); var dpad = new GamePadDPad( stateTK.DPad.IsUp ? ButtonState.Pressed : ButtonState.Released, stateTK.DPad.IsDown ? ButtonState.Pressed : ButtonState.Released, stateTK.DPad.IsLeft ? ButtonState.Pressed : ButtonState.Released, stateTK.DPad.IsRight ? ButtonState.Pressed : ButtonState.Released ); var result = new GamePadState(sticks, triggers, buttons, dpad); result.PacketNumber = stateTK.PacketNumber; return(result); }
/// <summary> /// Initializes a new instance of the GamePadState class with the specified stick, /// trigger, and button values. /// </summary> /// <param name="leftThumbStick"> /// Left stick value. Each axis is clamped between 1.0 and 1.0. /// </param> /// <param name="rightThumbStick"> /// Right stick value. Each axis is clamped between 1.0 and 1.0. /// </param> /// <param name="leftTrigger"> /// Left trigger value. This value is clamped between 0.0 and 1.0. /// </param> /// <param name="rightTrigger"> /// Right trigger value. This value is clamped between 0.0 and 1.0. /// </param> /// <param name="buttons"> /// Array or parameter list of Buttons to initialize as pressed. /// </param> public GamePadState( Vector2 leftThumbStick, Vector2 rightThumbStick, float leftTrigger, float rightTrigger, params Buttons[] buttons ) : this( new GamePadThumbSticks(leftThumbStick, rightThumbStick), new GamePadTriggers(leftTrigger, rightTrigger), GamePadButtons.FromButtonArray(buttons), GamePadDPad.FromButtonArray(buttons) ) { }
/// <summary> /// Initializes a new instance of the GamePadState class using the specified /// GamePadThumbSticks, GamePadTriggers, GamePadButtons, and GamePadDPad. /// </summary> /// <param name="thumbSticks">Initial thumbstick state.</param> /// <param name="triggers">Initial trigger state.</param> /// <param name="buttons">Initial button state.</param> /// <param name="dPad">Initial directional pad state.</param> public GamePadState( GamePadThumbSticks thumbSticks, GamePadTriggers triggers, GamePadButtons buttons, GamePadDPad dPad ) : this() { ThumbSticks = thumbSticks; Triggers = triggers; Buttons = buttons; DPad = dPad; IsConnected = true; PacketNumber = 0; }
internal bool Update(DateTime timeStamp, xinput.GamePadDPad curr) { if (_previous == curr) { return(false); } _timeStamp = timeStamp; _left = (curr.Left == xinput.ButtonState.Pressed); _down = (curr.Down == xinput.ButtonState.Pressed); _right = (curr.Right == xinput.ButtonState.Pressed); _up = (curr.Up == xinput.ButtonState.Pressed); _previous = curr; return(true); }
public JoystickState( bool isConnected, float posX, float posY, float posZ, float posR, float posU, float posV, int buttons, int buttonNum, bool[] buttonMap, GamePadDPad dPad) { this.isConnected = isConnected; this.positionX = posX; this.positionY = posY; this.positionZ = posZ; this.positionR = posR; this.positionU = posU; this.positionV = posV; this.buttons = buttons; this.buttonNum = buttonNum; this.buttonMap = buttonMap; this.dpad = dPad; }
private static GamePadState ReadState(PlayerIndex index, GamePadDeadZone deadZone) { IntPtr device = SdlGamePad.GetDevice(index); PadConfig config = SdlGamePad.GetConfig(index); if (device == IntPtr.Zero || config == null) { return(GamePadState.InitializedState); } Vector2 vector2_1 = config.LeftStick.ReadAxisPair(device); Vector2 vector2_2 = config.RightStick.ReadAxisPair(device); GamePadThumbSticks thumbSticks = new GamePadThumbSticks(new Vector2(vector2_1.X, vector2_1.Y), new Vector2(vector2_2.X, vector2_2.Y)); thumbSticks.ApplyDeadZone(deadZone, 0.27f); GamePadTriggers triggers = new GamePadTriggers(config.LeftTrigger.ReadFloat(device), config.RightTrigger.ReadFloat(device)); GamePadButtons buttons = new GamePadButtons(SdlGamePad.ReadButtons(device, config, 0.27f) | SdlGamePad.StickToButtons(thumbSticks.Left, Buttons.LeftThumbstickLeft, Buttons.LeftThumbstickRight, Buttons.LeftThumbstickUp, Buttons.LeftThumbstickDown, 0.27f) | SdlGamePad.StickToButtons(thumbSticks.Right, Buttons.RightThumbstickLeft, Buttons.RightThumbstickRight, Buttons.RightThumbstickUp, Buttons.RightThumbstickDown, 0.27f) | SdlGamePad.TriggerToButton(triggers.Left, Buttons.LeftTrigger, 0.27f) | SdlGamePad.TriggerToButton(triggers.Right, Buttons.RightTrigger, 0.27f)); GamePadDPad dPad = new GamePadDPad(buttons.buttons); return(new GamePadState(thumbSticks, triggers, buttons, dPad)); }
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); } GamePadThumbSticks sticks = new GamePadThumbSticks(new Vector2(c.LeftStick.ReadAxisPair(device)), new Vector2(c.RightStick.ReadAxisPair(device))); sticks.ApplyDeadZone(deadZone, DeadZoneSize); GamePadTriggers triggers = new GamePadTriggers(c.LeftTrigger.ReadFloat(device), c.RightTrigger.ReadFloat(device)); GamePadButtons buttons = new GamePadButtons(ReadButtons(device, c, DeadZoneSize)); GamePadDPad dpad = new GamePadDPad(buttons.buttons); GamePadState g = new GamePadState(sticks, triggers, buttons, dpad); return(g); }
public static GamePadState GetState(PlayerIndex playerIndex, GamePadDeadZone deadZoneMode = GamePadDeadZone.IndependentAxes) { Controller controller = GamePad.GetController(playerIndex); if (!controller.IsConnected) { return(new GamePadState()); } Gamepad gamepad = controller.GetState().Gamepad; GamePadThumbSticks gamePadThumbSticks1 = new GamePadThumbSticks(GamePad.ConvertThumbStick(gamepad.LeftThumbX, gamepad.LeftThumbY, (short)7849, deadZoneMode), GamePad.ConvertThumbStick(gamepad.RightThumbX, gamepad.RightThumbY, (short)8689, deadZoneMode)); GamePadTriggers gamePadTriggers1 = new GamePadTriggers((float)gamepad.LeftTrigger / (float)byte.MaxValue, (float)gamepad.RightTrigger / (float)byte.MaxValue); GamePadState gamePadState; // ISSUE: explicit reference operation // ISSUE: variable of a reference type GamePadState& local = @gamePadState; GamePadThumbSticks gamePadThumbSticks2 = gamePadThumbSticks1; GamePadTriggers gamePadTriggers2 = gamePadTriggers1; GamePadButtons gamePadButtons = GamePad.ConvertToButtons(gamepad.Buttons, gamepad.LeftThumbX, gamepad.LeftThumbY, gamepad.RightThumbX, gamepad.RightThumbY, gamepad.LeftTrigger, gamepad.RightTrigger); GamePadDPad gamePadDpad = GamePad.ConvertToGamePadDPad(gamepad.Buttons); GamePadThumbSticks thumbSticks = gamePadThumbSticks2; GamePadTriggers triggers = gamePadTriggers2; GamePadButtons buttons = gamePadButtons; GamePadDPad dPad = gamePadDpad;
private static GamePadState PlatformGetState(int index, GamePadDeadZone leftDeadZoneMode, GamePadDeadZone rightDeadZoneMode) { // If the device was disconneced then wait for // the timeout to elapsed before we test it again. if (!_connected[index] && !HasDisconnectedTimeoutElapsed(index)) { return(GetDefaultState()); } int packetNumber = 0; // Try to get the controller state. var gamepad = new SharpDX.XInput.Gamepad(); try { SharpDX.XInput.State xistate; var controller = _controllers[index]; _connected[index] = controller.GetState(out xistate); packetNumber = xistate.PacketNumber; gamepad = xistate.Gamepad; } catch (Exception) { } // If the device is disconnected retry it after the // timeout period has elapsed to avoid the overhead. if (!_connected[index]) { SetDisconnectedTimeout(index); return(GetDefaultState()); } var thumbSticks = new GamePadThumbSticks( leftPosition: new Vector2(gamepad.LeftThumbX, gamepad.LeftThumbY) / (float)short.MaxValue, rightPosition: new Vector2(gamepad.RightThumbX, gamepad.RightThumbY) / (float)short.MaxValue, leftDeadZoneMode: leftDeadZoneMode, rightDeadZoneMode: rightDeadZoneMode); var triggers = new GamePadTriggers( leftTrigger: gamepad.LeftTrigger / (float)byte.MaxValue, rightTrigger: gamepad.RightTrigger / (float)byte.MaxValue); var dpadState = new GamePadDPad( upValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadUp), downValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadDown), leftValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadLeft), rightValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadRight)); var buttons = ConvertToButtons( buttonFlags: gamepad.Buttons, leftTrigger: gamepad.LeftTrigger, rightTrigger: gamepad.RightTrigger); var state = new GamePadState( thumbSticks: thumbSticks, triggers: triggers, buttons: buttons, dPad: dpadState); state.PacketNumber = packetNumber; return(state); }
private static GamePadState PlatformGetState(int index, GamePadDeadZone deadZoneMode) { PrepSettings(); var stateTK = OpenTK.Input.GamePad.GetState (index); if (!stateTK.IsConnected) return GamePadState.Default; var sticks = new GamePadThumbSticks ( new Vector2(stateTK.ThumbSticks.Left.X, stateTK.ThumbSticks.Left.Y), new Vector2(stateTK.ThumbSticks.Right.X, stateTK.ThumbSticks.Right.Y), deadZoneMode ); var triggers = new GamePadTriggers ( stateTK.Triggers.Left, stateTK.Triggers.Right ); Buttons buttonStates = (stateTK.Buttons.A == OpenTK.Input.ButtonState.Pressed ? Buttons.A : 0) | (stateTK.Buttons.B == OpenTK.Input.ButtonState.Pressed ? Buttons.B : 0) | (stateTK.Buttons.Back == OpenTK.Input.ButtonState.Pressed ? Buttons.Back : 0) | (stateTK.Buttons.BigButton == OpenTK.Input.ButtonState.Pressed ? Buttons.BigButton : 0) | (stateTK.Buttons.LeftShoulder == OpenTK.Input.ButtonState.Pressed ? Buttons.LeftShoulder : 0) | (stateTK.Buttons.LeftStick == OpenTK.Input.ButtonState.Pressed ? Buttons.LeftStick : 0) | (stateTK.Buttons.RightShoulder == OpenTK.Input.ButtonState.Pressed ? Buttons.RightShoulder : 0) | (stateTK.Buttons.RightStick == OpenTK.Input.ButtonState.Pressed ? Buttons.RightStick : 0) | (stateTK.Buttons.Start == OpenTK.Input.ButtonState.Pressed ? Buttons.Start : 0) | (stateTK.Buttons.X == OpenTK.Input.ButtonState.Pressed ? Buttons.X : 0) | (stateTK.Buttons.Y == OpenTK.Input.ButtonState.Pressed ? Buttons.Y : 0) | 0; var buttons = new GamePadButtons(buttonStates); var dpad = new GamePadDPad( stateTK.DPad.IsUp ? ButtonState.Pressed : ButtonState.Released, stateTK.DPad.IsDown ? ButtonState.Pressed : ButtonState.Released, stateTK.DPad.IsLeft ? ButtonState.Pressed : ButtonState.Released, stateTK.DPad.IsRight ? ButtonState.Pressed : ButtonState.Released ); var result = new GamePadState(sticks, triggers, buttons, dpad); result.PacketNumber = stateTK.PacketNumber; return result; }
private static GamePadState PlatformGetState(int index, GamePadDeadZone deadZoneMode) { var state = GamePadState.Default; var jcap = Joystick.GetCapabilities(index); if (jcap.IsConnected) { state.IsConnected = true; var jstate = Joystick.GetState(index); if (!GamePadCache.ContainsKey(jcap.Id)) GamePadCache.Add(jcap.Id, Configurations.ContainsKey(jcap.Id) ? new GamepadTranslator(Configurations[jcap.Id]) : new GamepadTranslator("")); var gpc = GamePadCache[jcap.Id]; Buttons buttons = (gpc.ButtonPressed("a", jstate) ? Buttons.A : 0) | (gpc.ButtonPressed("b", jstate) ? Buttons.B : 0) | (gpc.ButtonPressed("back", jstate) ? Buttons.Back : 0) | (gpc.ButtonPressed("guide", jstate) ? Buttons.BigButton : 0) | (gpc.ButtonPressed("leftshoulder", jstate) ? Buttons.LeftShoulder : 0) | (gpc.ButtonPressed("leftstick", jstate) ? Buttons.LeftStick : 0) | (gpc.ButtonPressed("rightshoulder", jstate) ? Buttons.RightShoulder : 0) | (gpc.ButtonPressed("rightstick", jstate) ? Buttons.RightStick : 0) | (gpc.ButtonPressed("start", jstate) ? Buttons.Start : 0) | (gpc.ButtonPressed("x", jstate) ? Buttons.X : 0) | (gpc.ButtonPressed("y", jstate) ? Buttons.Y : 0) | 0; var sticks = new GamePadThumbSticks( new Vector2(gpc.AxisPressed("leftx", jstate), gpc.AxisPressed("lefty", jstate)), new Vector2(gpc.AxisPressed("rightx", jstate), gpc.AxisPressed("righty", jstate)), deadZoneMode ); var dpad = new GamePadDPad( gpc.DpadPressed("dpup", jstate) ? ButtonState.Pressed : ButtonState.Released, gpc.DpadPressed("dpdown", jstate) ? ButtonState.Pressed : ButtonState.Released, gpc.DpadPressed("dpleft", jstate) ? ButtonState.Pressed : ButtonState.Released, gpc.DpadPressed("dpright", jstate) ? ButtonState.Pressed : ButtonState.Released ); var triggers = new GamePadTriggers( gpc.TriggerPressed("lefttrigger", jstate), gpc.TriggerPressed("righttrigger", jstate) ); state = new GamePadState(sticks, triggers, new GamePadButtons(buttons), dpad); } return state; }
void IInputManager.Update(GameTime gameTime) { //foreach (CollidablePairHandler p in aheadBox.CollisionInformation.Pairs) // { // foreach (ContactInformation c in p.Contacts) // { // System.Diagnostics.Debug.WriteLine("{0} {1}", (c.Contact.Position - ship.ShipPosition).Length(), c.Contact.Normal); // } // } Vector2 leftThumbStick = Vector2.Zero; Vector2 rightThumbStick = Vector2.Zero; Buttons pressedButtons = setButtons(); turnVal = setTurn(); leftThumbStick.X = turnVal; accelVal = setAcceleration(); GamePadThumbSticks sticks = new GamePadThumbSticks(leftThumbStick, rightThumbStick); GamePadButtons buttons = new GamePadButtons(pressedButtons); GamePadTriggers triggers; if (accelVal >= 0f) { triggers = new GamePadTriggers(0f, accelVal); } else { triggers = new GamePadTriggers(-accelVal, 0f); } GamePadDPad dpad = new GamePadDPad(); lastState = currentState; currentState = new GamePadState(sticks, triggers, buttons, dpad); }
private static GamePadState Combine(GamePadState gamepad, Buttons buttons) { var result = gamepad; if (buttons > 0) { var gpThumbSticks = new GamePadThumbSticks( new Vector2( (buttons & Buttons.LeftThumbstickLeft) > 0 ? -1 : (buttons & Buttons.LeftThumbstickRight) > 0 ? 1 : gamepad.ThumbSticks.Left.X, (buttons & Buttons.LeftThumbstickDown) > 0 ? -1 : (buttons & Buttons.LeftThumbstickUp) > 0 ? 1 : gamepad.ThumbSticks.Left.Y), new Vector2( (buttons & Buttons.RightThumbstickLeft) > 0 ? -1 : (buttons & Buttons.RightThumbstickRight) > 0 ? 1 : gamepad.ThumbSticks.Right.X, (buttons & Buttons.RightThumbstickDown) > 0 ? -1 : (buttons & Buttons.RightThumbstickUp) > 0 ? 1 : gamepad.ThumbSticks.Right.Y) ); var gpTriggers = new GamePadTriggers( Math.Max(gamepad.Triggers.Left, (buttons & Buttons.LeftTrigger) > 0 ? 1.0f : 0.0f), Math.Max(gamepad.Triggers.Right, (buttons & Buttons.RightTrigger) > 0 ? 1.0f : 0.0f) ); var gpDPad = new GamePadDPad( (buttons & Buttons.DPadUp) > 0 ? ButtonState.Pressed : gamepad.DPad.Up, (buttons & Buttons.DPadDown) > 0 ? ButtonState.Pressed : gamepad.DPad.Down, (buttons & Buttons.DPadLeft) > 0 ? ButtonState.Pressed : gamepad.DPad.Left, (buttons & Buttons.DPadRight) > 0 ? ButtonState.Pressed : gamepad.DPad.Right ); var gpButtons = new GamePadButtons(buttons & GAMEPAD_DIGITAL_BUTTONS); result = new GamePadState(gpThumbSticks, gpTriggers, gpButtons, gpDPad); } if (GamePadEx.DPadMimicsThumbstickLeft) { var left = result.ThumbSticks.Left; if (result.DPad.Left == ButtonState.Pressed) { left.X = -1.0f; } if (result.DPad.Right == ButtonState.Pressed) { left.X = 1.0f; } if (result.DPad.Up == ButtonState.Pressed) { left.Y = 1.0f; } if (result.DPad.Down == ButtonState.Pressed) { left.Y = -1.0f; } result = new GamePadState( new GamePadThumbSticks(left, result.ThumbSticks.Right), result.Triggers, result.Buttons, result.DPad ); } return result; }
public static GamePadState GetState(PlayerIndex playerIndex, GamePadDeadZone deadZoneMode) { IntPtr device = INTERNAL_devices[(int) playerIndex]; if (device == IntPtr.Zero) { return InitializedState; } // Do not attempt to understand this number at all costs! const float DeadZoneSize = 0.27f; // The "master" button state is built from this. Buttons gc_buttonState = (Buttons) 0; // Sticks GamePadThumbSticks gc_sticks = new GamePadThumbSticks( new Vector2( (float) SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_LEFTX ) / 32768.0f, (float) SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_LEFTY ) / -32768.0f * invertAxis ), new Vector2( (float) SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_RIGHTX ) / 32768.0f, (float) SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_RIGHTY ) / -32768.0f * invertAxis ), deadZoneMode ); gc_buttonState |= READ_StickToButtons( gc_sticks.Left, Buttons.LeftThumbstickLeft, Buttons.LeftThumbstickRight, Buttons.LeftThumbstickUp, Buttons.LeftThumbstickDown, DeadZoneSize ); gc_buttonState |= READ_StickToButtons( gc_sticks.Right, Buttons.RightThumbstickLeft, Buttons.RightThumbstickRight, Buttons.RightThumbstickUp, Buttons.RightThumbstickDown, DeadZoneSize ); // Triggers GamePadTriggers gc_triggers = new GamePadTriggers( (float) SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_TRIGGERLEFT ) / 32768.0f, (float) SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_TRIGGERRIGHT ) / 32768.0f ); gc_buttonState |= READ_TriggerToButton( gc_triggers.Left, Buttons.LeftTrigger, DeadZoneSize ); gc_buttonState |= READ_TriggerToButton( gc_triggers.Right, Buttons.RightTrigger, DeadZoneSize ); // Buttons if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_A) != 0) { gc_buttonState |= Buttons.A; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_B) != 0) { gc_buttonState |= Buttons.B; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_X) != 0) { gc_buttonState |= Buttons.X; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_Y) != 0) { gc_buttonState |= Buttons.Y; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_BACK) != 0) { gc_buttonState |= Buttons.Back; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_GUIDE) != 0) { gc_buttonState |= Buttons.BigButton; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_START) != 0) { gc_buttonState |= Buttons.Start; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_LEFTSTICK) != 0) { gc_buttonState |= Buttons.LeftStick; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_RIGHTSTICK) != 0) { gc_buttonState |= Buttons.RightStick; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_LEFTSHOULDER) != 0) { gc_buttonState |= Buttons.LeftShoulder; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_RIGHTSHOULDER) != 0) { gc_buttonState |= Buttons.RightShoulder; } // DPad GamePadDPad gc_dpad; if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_UP) != 0) { gc_buttonState |= Buttons.DPadUp; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_DOWN) != 0) { gc_buttonState |= Buttons.DPadDown; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_LEFT) != 0) { gc_buttonState |= Buttons.DPadLeft; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_RIGHT) != 0) { gc_buttonState |= Buttons.DPadRight; } gc_dpad = new GamePadDPad(gc_buttonState); // Compile the master buttonstate GamePadButtons gc_buttons = new GamePadButtons(gc_buttonState); // Build the GamePadState, increment PacketNumber if state changed. GamePadState gc_builtState = new GamePadState( gc_sticks, gc_triggers, gc_buttons, gc_dpad ); gc_builtState.IsConnected = true; gc_builtState.PacketNumber = INTERNAL_states[(int) playerIndex].PacketNumber; if (gc_builtState != INTERNAL_states[(int) playerIndex]) { gc_builtState.PacketNumber += 1; INTERNAL_states[(int) playerIndex] = gc_builtState; } return gc_builtState; }
private static GamePadState PlatformGetState(int index, GamePadDeadZone deadZoneMode) { if (index >= WGI.Gamepad.Gamepads.Count) return GamePadState.Default; var state = WGI.Gamepad.Gamepads[index].GetCurrentReading(); var sticks = new GamePadThumbSticks( new Vector2((float)state.LeftThumbstickX, (float)state.LeftThumbstickY), new Vector2((float)state.RightThumbstickX, (float)state.RightThumbstickY), deadZoneMode ); var triggers = new GamePadTriggers( (float)state.LeftTrigger, (float)state.RightTrigger ); Buttons buttonStates = (state.Buttons.HasFlag(WGI.GamepadButtons.A) ? Buttons.A : 0) | (state.Buttons.HasFlag(WGI.GamepadButtons.B) ? Buttons.B : 0) | ((state.Buttons.HasFlag(WGI.GamepadButtons.View) || Back) ? Buttons.Back : 0) | 0 | //BigButton is unavailable by Windows.Gaming.Input.Gamepad (state.Buttons.HasFlag(WGI.GamepadButtons.LeftShoulder) ? Buttons.LeftShoulder : 0) | (state.Buttons.HasFlag(WGI.GamepadButtons.LeftThumbstick) ? Buttons.LeftStick : 0) | (state.Buttons.HasFlag(WGI.GamepadButtons.RightShoulder) ? Buttons.RightShoulder : 0) | (state.Buttons.HasFlag(WGI.GamepadButtons.RightThumbstick) ? Buttons.RightStick : 0) | (state.Buttons.HasFlag(WGI.GamepadButtons.Menu) ? Buttons.Start : 0) | (state.Buttons.HasFlag(WGI.GamepadButtons.X) ? Buttons.X : 0) | (state.Buttons.HasFlag(WGI.GamepadButtons.Y) ? Buttons.Y : 0) | 0; var buttons = new GamePadButtons(buttonStates); var dpad = new GamePadDPad( state.Buttons.HasFlag(WGI.GamepadButtons.DPadUp) ? ButtonState.Pressed : ButtonState.Released, state.Buttons.HasFlag(WGI.GamepadButtons.DPadDown) ? ButtonState.Pressed : ButtonState.Released, state.Buttons.HasFlag(WGI.GamepadButtons.DPadLeft) ? ButtonState.Pressed : ButtonState.Released, state.Buttons.HasFlag(WGI.GamepadButtons.DPadRight) ? ButtonState.Pressed : ButtonState.Released ); var result = new GamePadState(sticks, triggers, buttons, dpad); result.PacketNumber = (int)state.Timestamp; return result; }
private static GamePadState ReadState(PlayerIndex index, GamePadDeadZone deadZone) { IntPtr device = SdlGamePad.GetDevice(index); PadConfig config = SdlGamePad.GetConfig(index); if (device == IntPtr.Zero || config == null) return GamePadState.InitializedState; Vector2 vector2_1 = config.LeftStick.ReadAxisPair(device); Vector2 vector2_2 = config.RightStick.ReadAxisPair(device); GamePadThumbSticks thumbSticks = new GamePadThumbSticks(new Vector2(vector2_1.X, vector2_1.Y), new Vector2(vector2_2.X, vector2_2.Y)); thumbSticks.ApplyDeadZone(deadZone, 0.27f); GamePadTriggers triggers = new GamePadTriggers(config.LeftTrigger.ReadFloat(device), config.RightTrigger.ReadFloat(device)); GamePadButtons buttons = new GamePadButtons(SdlGamePad.ReadButtons(device, config, 0.27f) | SdlGamePad.StickToButtons(thumbSticks.Left, Buttons.LeftThumbstickLeft, Buttons.LeftThumbstickRight, Buttons.LeftThumbstickUp, Buttons.LeftThumbstickDown, 0.27f) | SdlGamePad.StickToButtons(thumbSticks.Right, Buttons.RightThumbstickLeft, Buttons.RightThumbstickRight, Buttons.RightThumbstickUp, Buttons.RightThumbstickDown, 0.27f) | SdlGamePad.TriggerToButton(triggers.Left, Buttons.LeftTrigger, 0.27f) | SdlGamePad.TriggerToButton(triggers.Right, Buttons.RightTrigger, 0.27f)); GamePadDPad dPad = new GamePadDPad(buttons.buttons); return new GamePadState(thumbSticks, triggers, buttons, dPad); }
/// <summary> /// Creates a default orthographic camera and lets it respond as if /// the game pad's directional pad was in the specified state /// </summary> /// <param name="directionalPad">State of the game pad's directional pad</param> /// <returns>The camera after it has responded to the provided controls</returns> private Camera handleControlsOnDefaultCamera(GamePadDPad directionalPad) { return handleControlsOnDefaultCamera( new KeyboardState(), new GamePadState( new GamePadThumbSticks(), new GamePadTriggers(), new GamePadButtons(), directionalPad ) ); }
public void CanConvertBetweeenDirectionalPadAndPov( int pov, bool up, bool down, bool left, bool right ) { GamePadDPad dpad = new GamePadDPad( up ? ButtonState.Pressed : ButtonState.Released, down ? ButtonState.Pressed : ButtonState.Released, left ? ButtonState.Pressed : ButtonState.Released, right ? ButtonState.Pressed : ButtonState.Released ); Assert.AreEqual(pov, ExtendedGamePadState.PovFromDpad(dpad)); Assert.AreEqual(dpad, ExtendedGamePadState.DpadFromPov(pov)); }
/// <summary>Converts a joystick state into an XNA game pad state</summary> /// <param name="joystickState">Joystick state that will be converted</param> /// <returns>The equivalent XNA game pad state</returns> internal GamePadState Convert(ref JoystickState joystickState) { // Read the current states of both thumb sticks Vector2 leftThumbstick, rightThumbstick; { if (this.axisReaders[0] != null) { leftThumbstick.X = this.axisReaders[0].GetValue(ref joystickState); } else { leftThumbstick.X = 0.0f; } if (this.axisReaders[1] != null) { leftThumbstick.Y = -this.axisReaders[1].GetValue(ref joystickState); } else { leftThumbstick.Y = 0.0f; } if (this.axisReaders[12] != null) { rightThumbstick.X = this.axisReaders[12].GetValue(ref joystickState); } else { rightThumbstick.X = 0.0f; } if (this.axisReaders[13] != null) { rightThumbstick.Y = -this.axisReaders[13].GetValue(ref joystickState); } else { rightThumbstick.Y = 0.0f; } } // Read the current states of the triggers float leftTrigger, rightTrigger; { if (this.sliderReaders[0] != null) { leftTrigger = this.sliderReaders[0].GetValue(ref joystickState); } else { leftTrigger = 0.0f; } if (this.sliderReaders[1] != null) { rightTrigger = this.sliderReaders[1].GetValue(ref joystickState); } else { rightTrigger = 0.0f; } } // Convert the button states Buttons buttons = 0; { Buttons[] buttonOrder = ExtendedGamePadState.ButtonOrder; bool[] buttonPressed = joystickState.GetButtons(); int count = Math.Min(buttonOrder.Length, this.buttonCount); for (int index = 0; index < count; ++index) { if (buttonPressed[index]) { buttons |= buttonOrder[index]; } } } // Convert the first PoV controller into a directional pad GamePadDPad dpad; { if (this.povCount > 0) { int[] povs = joystickState.GetPointOfViewControllers(); dpad = ExtendedGamePadState.DpadFromPov(povs[0]); } else { dpad = new GamePadDPad(); } } // All informations gathered, construct the game pad state return new GamePadState( new GamePadThumbSticks(leftThumbstick, rightThumbstick), new GamePadTriggers(leftTrigger, rightTrigger), new XnaGamePadButtons(buttons), dpad ); }
public static GamePadState GetState(PlayerIndex playerIndex, GamePadDeadZone deadZoneMode) { // Make sure the player index is in range. var index = (int)playerIndex; if (index < (int)PlayerIndex.One || index > (int)PlayerIndex.Four) throw new InvalidOperationException(); // If the device was disconneced then wait for // the timeout to elapsed before we test it again. if (!_connected[index] && _timeout[index] > DateTime.UtcNow.Ticks) return new GamePadState(); // Try to get the controller state. SharpDX.XInput.State xistate; var controller = _controllers[index]; _connected[index] = controller.GetState(out xistate); var gamepad = xistate.Gamepad; // If the device is disconnected retry it after the // timeout period has elapsed to avoid the overhead. if (!_connected[index]) { _timeout[index] = DateTime.UtcNow.Ticks + TimeoutTicks; return new GamePadState(); } var thumbSticks = new GamePadThumbSticks( leftPosition: ConvertThumbStick(gamepad.LeftThumbX, gamepad.LeftThumbY, SharpDX.XInput.Gamepad.LeftThumbDeadZone, deadZoneMode), rightPosition: ConvertThumbStick(gamepad.RightThumbX, gamepad.RightThumbY, SharpDX.XInput.Gamepad.RightThumbDeadZone, deadZoneMode)); var triggers = new GamePadTriggers( leftTrigger: gamepad.LeftTrigger / (float)byte.MaxValue, rightTrigger: gamepad.RightTrigger / (float)byte.MaxValue); var dpadState = new GamePadDPad( upValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadUp), downValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadDown), leftValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadLeft), rightValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadRight)); var buttons = ConvertToButtons( buttonFlags: gamepad.Buttons, leftThumbX: gamepad.LeftThumbX, leftThumbY: gamepad.LeftThumbY, rightThumbX: gamepad.RightThumbX, rightThumbY: gamepad.RightThumbY, leftTrigger: gamepad.LeftTrigger, rightTrigger: gamepad.RightTrigger); var state = new GamePadState( thumbSticks: thumbSticks, triggers: triggers, buttons: buttons, dPad: dpadState); return state; }
public static GamePadState GetState(PlayerIndex playerIndex, GamePadDeadZone deadZoneMode) { IntPtr device = INTERNAL_devices[(int) playerIndex]; if (device == IntPtr.Zero) { return InitializedState; } // Do not attempt to understand this number at all costs! const float DeadZoneSize = 0.27f; // SDL_GameController if (INTERNAL_isGameController[(int) playerIndex]) { // The "master" button state is built from this. Buttons gc_buttonState = (Buttons) 0; // Sticks GamePadThumbSticks gc_sticks = new GamePadThumbSticks( new Vector2( (float) SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_LEFTX ) / 32768.0f, (float) SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_LEFTY ) / -32768.0f ), new Vector2( (float) SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_RIGHTX ) / 32768.0f, (float) SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_RIGHTY ) / -32768.0f ) ); gc_sticks.ApplyDeadZone(deadZoneMode, DeadZoneSize); gc_buttonState |= READ_StickToButtons( gc_sticks.Left, Buttons.LeftThumbstickLeft, Buttons.LeftThumbstickRight, Buttons.LeftThumbstickUp, Buttons.LeftThumbstickDown, DeadZoneSize ); gc_buttonState |= READ_StickToButtons( gc_sticks.Right, Buttons.RightThumbstickLeft, Buttons.RightThumbstickRight, Buttons.RightThumbstickUp, Buttons.RightThumbstickDown, DeadZoneSize ); // Triggers GamePadTriggers gc_triggers = new GamePadTriggers( (float) SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_TRIGGERLEFT ) / 32768.0f, (float) SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_TRIGGERRIGHT ) / 32768.0f ); gc_buttonState |= READ_TriggerToButton( gc_triggers.Left, Buttons.LeftTrigger, DeadZoneSize ); gc_buttonState |= READ_TriggerToButton( gc_triggers.Right, Buttons.RightTrigger, DeadZoneSize ); // Buttons if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_A) != 0) { gc_buttonState |= Buttons.A; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_B) != 0) { gc_buttonState |= Buttons.B; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_X) != 0) { gc_buttonState |= Buttons.X; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_Y) != 0) { gc_buttonState |= Buttons.Y; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_BACK) != 0) { gc_buttonState |= Buttons.Back; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_GUIDE) != 0) { gc_buttonState |= Buttons.BigButton; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_START) != 0) { gc_buttonState |= Buttons.Start; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_LEFTSTICK) != 0) { gc_buttonState |= Buttons.LeftStick; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_RIGHTSTICK) != 0) { gc_buttonState |= Buttons.RightStick; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_LEFTSHOULDER) != 0) { gc_buttonState |= Buttons.LeftShoulder; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_RIGHTSHOULDER) != 0) { gc_buttonState |= Buttons.RightShoulder; } // DPad GamePadDPad gc_dpad; if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_UP) != 0) { gc_buttonState |= Buttons.DPadUp; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_DOWN) != 0) { gc_buttonState |= Buttons.DPadDown; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_LEFT) != 0) { gc_buttonState |= Buttons.DPadLeft; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_RIGHT) != 0) { gc_buttonState |= Buttons.DPadRight; } gc_dpad = new GamePadDPad(gc_buttonState); // Compile the master buttonstate GamePadButtons gc_buttons = new GamePadButtons(gc_buttonState); // Build the GamePadState, increment PacketNumber if state changed. GamePadState gc_builtState = new GamePadState( gc_sticks, gc_triggers, gc_buttons, gc_dpad ); gc_builtState.PacketNumber = INTERNAL_states[(int) playerIndex].PacketNumber; if (gc_builtState != INTERNAL_states[(int) playerIndex]) { gc_builtState.PacketNumber += 1; INTERNAL_states[(int) playerIndex] = gc_builtState; } return gc_builtState; } // SDL_Joystick // We will interpret the joystick values into this. Buttons buttonState = (Buttons) 0; // Sticks GamePadThumbSticks sticks = new GamePadThumbSticks( new Vector2( READTYPE_ReadFloat(INTERNAL_joystickConfig.AXIS_LX, device), -READTYPE_ReadFloat(INTERNAL_joystickConfig.AXIS_LY, device) ), new Vector2( READTYPE_ReadFloat(INTERNAL_joystickConfig.AXIS_RX, device), -READTYPE_ReadFloat(INTERNAL_joystickConfig.AXIS_RY, device) ) ); sticks.ApplyDeadZone(deadZoneMode, DeadZoneSize); buttonState |= READ_StickToButtons( sticks.Left, Buttons.LeftThumbstickLeft, Buttons.LeftThumbstickRight, Buttons.LeftThumbstickUp, Buttons.LeftThumbstickDown, DeadZoneSize ); buttonState |= READ_StickToButtons( sticks.Right, Buttons.RightThumbstickLeft, Buttons.RightThumbstickRight, Buttons.RightThumbstickUp, Buttons.RightThumbstickDown, DeadZoneSize ); // Buttons buttonState = READ_ReadButtons(device, DeadZoneSize); // Triggers GamePadTriggers triggers = new GamePadTriggers( READTYPE_ReadFloat(INTERNAL_joystickConfig.TRIGGER_LT, device), READTYPE_ReadFloat(INTERNAL_joystickConfig.TRIGGER_RT, device) ); buttonState |= READ_TriggerToButton( triggers.Left, Buttons.LeftTrigger, DeadZoneSize ); buttonState |= READ_TriggerToButton( triggers.Right, Buttons.RightTrigger, DeadZoneSize ); // Compile the GamePadButtons with our Buttons state GamePadButtons buttons = new GamePadButtons(buttonState); // DPad GamePadDPad dpad = new GamePadDPad(buttons.buttons); // Build the GamePadState, increment PacketNumber if state changed. GamePadState builtState = new GamePadState( sticks, triggers, buttons, dpad ); builtState.PacketNumber = INTERNAL_states[(int) playerIndex].PacketNumber; if (builtState != INTERNAL_states[(int) playerIndex]) { builtState.PacketNumber += 1; INTERNAL_states[(int) playerIndex] = builtState; } return builtState; }
public static GamePadState GetState(PlayerIndex playerIndex, GamePadDeadZone deadZoneMode) { IntPtr device = INTERNAL_devices[(int)playerIndex]; if (device == IntPtr.Zero) { return(InitializedState); } // Do not attempt to understand this number at all costs! const float DeadZoneSize = 0.27f; // SDL_GameController if (INTERNAL_isGameController[(int)playerIndex]) { // The "master" button state is built from this. Buttons gc_buttonState = (Buttons)0; // Sticks GamePadThumbSticks gc_sticks = new GamePadThumbSticks( new Vector2( (float)SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_LEFTX ) / 32768.0f, (float)SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_LEFTY ) / -32768.0f ), new Vector2( (float)SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_RIGHTX ) / 32768.0f, (float)SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_RIGHTY ) / -32768.0f ) ); gc_sticks.ApplyDeadZone(deadZoneMode, DeadZoneSize); gc_buttonState |= READ_StickToButtons( gc_sticks.Left, Buttons.LeftThumbstickLeft, Buttons.LeftThumbstickRight, Buttons.LeftThumbstickUp, Buttons.LeftThumbstickDown, DeadZoneSize ); gc_buttonState |= READ_StickToButtons( gc_sticks.Right, Buttons.RightThumbstickLeft, Buttons.RightThumbstickRight, Buttons.RightThumbstickUp, Buttons.RightThumbstickDown, DeadZoneSize ); // Triggers GamePadTriggers gc_triggers = new GamePadTriggers( (float)SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_TRIGGERLEFT ) / 32768.0f, (float)SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_TRIGGERRIGHT ) / 32768.0f ); gc_buttonState |= READ_TriggerToButton( gc_triggers.Left, Buttons.LeftTrigger, DeadZoneSize ); gc_buttonState |= READ_TriggerToButton( gc_triggers.Right, Buttons.RightTrigger, DeadZoneSize ); // Buttons if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_A) != 0) { gc_buttonState |= Buttons.A; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_B) != 0) { gc_buttonState |= Buttons.B; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_X) != 0) { gc_buttonState |= Buttons.X; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_Y) != 0) { gc_buttonState |= Buttons.Y; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_BACK) != 0) { gc_buttonState |= Buttons.Back; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_GUIDE) != 0) { gc_buttonState |= Buttons.BigButton; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_START) != 0) { gc_buttonState |= Buttons.Start; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_LEFTSTICK) != 0) { gc_buttonState |= Buttons.LeftStick; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_RIGHTSTICK) != 0) { gc_buttonState |= Buttons.RightStick; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_LEFTSHOULDER) != 0) { gc_buttonState |= Buttons.LeftShoulder; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_RIGHTSHOULDER) != 0) { gc_buttonState |= Buttons.RightShoulder; } // DPad GamePadDPad gc_dpad; if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_UP) != 0) { gc_buttonState |= Buttons.DPadUp; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_DOWN) != 0) { gc_buttonState |= Buttons.DPadDown; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_LEFT) != 0) { gc_buttonState |= Buttons.DPadLeft; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_RIGHT) != 0) { gc_buttonState |= Buttons.DPadRight; } gc_dpad = new GamePadDPad(gc_buttonState); // Compile the master buttonstate GamePadButtons gc_buttons = new GamePadButtons(gc_buttonState); // Build the GamePadState, increment PacketNumber if state changed. GamePadState gc_builtState = new GamePadState( gc_sticks, gc_triggers, gc_buttons, gc_dpad ); gc_builtState.PacketNumber = INTERNAL_states[(int)playerIndex].PacketNumber; if (gc_builtState != INTERNAL_states[(int)playerIndex]) { gc_builtState.PacketNumber += 1; INTERNAL_states[(int)playerIndex] = gc_builtState; } return(gc_builtState); } // SDL_Joystick // We will interpret the joystick values into this. Buttons buttonState = (Buttons)0; // Sticks GamePadThumbSticks sticks = new GamePadThumbSticks( new Vector2( READTYPE_ReadFloat(INTERNAL_joystickConfig.AXIS_LX, device), -READTYPE_ReadFloat(INTERNAL_joystickConfig.AXIS_LY, device) ), new Vector2( READTYPE_ReadFloat(INTERNAL_joystickConfig.AXIS_RX, device), -READTYPE_ReadFloat(INTERNAL_joystickConfig.AXIS_RY, device) ) ); sticks.ApplyDeadZone(deadZoneMode, DeadZoneSize); buttonState |= READ_StickToButtons( sticks.Left, Buttons.LeftThumbstickLeft, Buttons.LeftThumbstickRight, Buttons.LeftThumbstickUp, Buttons.LeftThumbstickDown, DeadZoneSize ); buttonState |= READ_StickToButtons( sticks.Right, Buttons.RightThumbstickLeft, Buttons.RightThumbstickRight, Buttons.RightThumbstickUp, Buttons.RightThumbstickDown, DeadZoneSize ); // Buttons buttonState = READ_ReadButtons(device, DeadZoneSize); // Triggers GamePadTriggers triggers = new GamePadTriggers( READTYPE_ReadFloat(INTERNAL_joystickConfig.TRIGGER_LT, device), READTYPE_ReadFloat(INTERNAL_joystickConfig.TRIGGER_RT, device) ); buttonState |= READ_TriggerToButton( triggers.Left, Buttons.LeftTrigger, DeadZoneSize ); buttonState |= READ_TriggerToButton( triggers.Right, Buttons.RightTrigger, DeadZoneSize ); // Compile the GamePadButtons with our Buttons state GamePadButtons buttons = new GamePadButtons(buttonState); // DPad GamePadDPad dpad = new GamePadDPad(buttons.buttons); // Build the GamePadState, increment PacketNumber if state changed. GamePadState builtState = new GamePadState( sticks, triggers, buttons, dpad ); builtState.PacketNumber = INTERNAL_states[(int)playerIndex].PacketNumber; if (builtState != INTERNAL_states[(int)playerIndex]) { builtState.PacketNumber += 1; INTERNAL_states[(int)playerIndex] = builtState; } return(builtState); }
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; }
private static GamePadState PlatformGetState(int index, GamePadDeadZone deadZoneMode) { // If the device was disconneced then wait for // the timeout to elapsed before we test it again. if (!_connected[index] && _timeout[index] > DateTime.UtcNow.Ticks) return GetDefaultState(); int packetNumber = 0; // Try to get the controller state. var gamepad = new SharpDX.XInput.Gamepad(); try { SharpDX.XInput.State xistate; var controller = _controllers[index]; _connected[index] = controller.GetState(out xistate); packetNumber = xistate.PacketNumber; gamepad = xistate.Gamepad; } catch (Exception ex) { } // If the device is disconnected retry it after the // timeout period has elapsed to avoid the overhead. if (!_connected[index]) { _timeout[index] = DateTime.UtcNow.Ticks + TimeoutTicks; return GetDefaultState(); } var thumbSticks = new GamePadThumbSticks( leftPosition: new Vector2(gamepad.LeftThumbX, gamepad.LeftThumbY) / (float)short.MaxValue, rightPosition: new Vector2(gamepad.RightThumbX, gamepad.RightThumbY) / (float)short.MaxValue, deadZoneMode: deadZoneMode); var triggers = new GamePadTriggers( leftTrigger: gamepad.LeftTrigger / (float)byte.MaxValue, rightTrigger: gamepad.RightTrigger / (float)byte.MaxValue); var dpadState = new GamePadDPad( upValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadUp), downValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadDown), leftValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadLeft), rightValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadRight)); var buttons = ConvertToButtons( buttonFlags: gamepad.Buttons, leftThumbX: gamepad.LeftThumbX, leftThumbY: gamepad.LeftThumbY, rightThumbX: gamepad.RightThumbX, rightThumbY: gamepad.RightThumbY, leftTrigger: gamepad.LeftTrigger, rightTrigger: gamepad.RightTrigger); var state = new GamePadState( thumbSticks: thumbSticks, triggers: triggers, buttons: buttons, dPad: dpadState); state.PacketNumber = packetNumber; return state; }
static GamePadState ReadState(int index, GamePadDeadZone deadZone) { const float DeadZoneSize = 0.27f; var device = devices[index]; var c = Settings[index]; if (device == IntPtr.Zero || c == null) return GamePadState.Default; 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), deadZone); 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; }
protected override void ProcessAI(GameTime gameTime) { Vector2 moveDirection = Vector2.Zero; if (Vector2.Distance (Gunner.Location, Location) > 200) { moveDirection = Gunner.Location - Location; moveDirection.Normalize(); moveDirection.Y *= -1; } GamePadThumbSticks sticks = new GamePadThumbSticks (moveDirection, Vector2.Zero); GamePadDPad pad = new GamePadDPad (ButtonState.Released, ButtonState.Released, ButtonState.Released, ButtonState.Released); Buttons buttons = default (Buttons); Moxy.CurrentPadStates[PadIndex] = new GamePadState (sticks, new GamePadTriggers (0f, 0f), new GamePadButtons (buttons), pad); }
public static GamePadState GetState(PlayerIndex playerIndex, GamePadDeadZone deadZoneMode) { IntPtr device = INTERNAL_devices[(int)playerIndex]; if (device == IntPtr.Zero) { return(InitializedState); } // Do not attempt to understand this number at all costs! const float DeadZoneSize = 0.27f; // The "master" button state is built from this. Buttons gc_buttonState = (Buttons)0; // Sticks GamePadThumbSticks gc_sticks = new GamePadThumbSticks( new Vector2( (float)SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_LEFTX ) / 32768.0f, (float)SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_LEFTY ) / -32768.0f * invertAxis ), new Vector2( (float)SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_RIGHTX ) / 32768.0f, (float)SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_RIGHTY ) / -32768.0f * invertAxis ), deadZoneMode ); gc_buttonState |= READ_StickToButtons( gc_sticks.Left, Buttons.LeftThumbstickLeft, Buttons.LeftThumbstickRight, Buttons.LeftThumbstickUp, Buttons.LeftThumbstickDown, DeadZoneSize ); gc_buttonState |= READ_StickToButtons( gc_sticks.Right, Buttons.RightThumbstickLeft, Buttons.RightThumbstickRight, Buttons.RightThumbstickUp, Buttons.RightThumbstickDown, DeadZoneSize ); // Triggers GamePadTriggers gc_triggers = new GamePadTriggers( (float)SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_TRIGGERLEFT ) / 32768.0f, (float)SDL.SDL_GameControllerGetAxis( device, SDL.SDL_GameControllerAxis.SDL_CONTROLLER_AXIS_TRIGGERRIGHT ) / 32768.0f ); gc_buttonState |= READ_TriggerToButton( gc_triggers.Left, Buttons.LeftTrigger, DeadZoneSize ); gc_buttonState |= READ_TriggerToButton( gc_triggers.Right, Buttons.RightTrigger, DeadZoneSize ); // Buttons if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_A) != 0) { gc_buttonState |= Buttons.A; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_B) != 0) { gc_buttonState |= Buttons.B; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_X) != 0) { gc_buttonState |= Buttons.X; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_Y) != 0) { gc_buttonState |= Buttons.Y; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_BACK) != 0) { gc_buttonState |= Buttons.Back; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_GUIDE) != 0) { gc_buttonState |= Buttons.BigButton; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_START) != 0) { gc_buttonState |= Buttons.Start; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_LEFTSTICK) != 0) { gc_buttonState |= Buttons.LeftStick; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_RIGHTSTICK) != 0) { gc_buttonState |= Buttons.RightStick; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_LEFTSHOULDER) != 0) { gc_buttonState |= Buttons.LeftShoulder; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_RIGHTSHOULDER) != 0) { gc_buttonState |= Buttons.RightShoulder; } // DPad GamePadDPad gc_dpad; if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_UP) != 0) { gc_buttonState |= Buttons.DPadUp; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_DOWN) != 0) { gc_buttonState |= Buttons.DPadDown; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_LEFT) != 0) { gc_buttonState |= Buttons.DPadLeft; } if (SDL.SDL_GameControllerGetButton(device, SDL.SDL_GameControllerButton.SDL_CONTROLLER_BUTTON_DPAD_RIGHT) != 0) { gc_buttonState |= Buttons.DPadRight; } gc_dpad = new GamePadDPad(gc_buttonState); // Compile the master buttonstate GamePadButtons gc_buttons = new GamePadButtons(gc_buttonState); // Build the GamePadState, increment PacketNumber if state changed. GamePadState gc_builtState = new GamePadState( gc_sticks, gc_triggers, gc_buttons, gc_dpad ); gc_builtState.IsConnected = true; gc_builtState.PacketNumber = INTERNAL_states[(int)playerIndex].PacketNumber; if (gc_builtState != INTERNAL_states[(int)playerIndex]) { gc_builtState.PacketNumber += 1; INTERNAL_states[(int)playerIndex] = gc_builtState; } return(gc_builtState); }
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; GamePadThumbSticks sticks = new GamePadThumbSticks(new Vector2(c.LeftStick.ReadAxisPair(device)), new Vector2(c.RightStick.ReadAxisPair(device))); sticks.ApplyDeadZone(deadZone, DeadZoneSize); GamePadTriggers triggers = new GamePadTriggers(c.LeftTrigger.ReadFloat(device), c.RightTrigger.ReadFloat(device)); GamePadButtons buttons = new GamePadButtons(ReadButtons(device, c, DeadZoneSize)); GamePadDPad dpad = new GamePadDPad(buttons.buttons); GamePadState g = new GamePadState(sticks, triggers, buttons, dpad); return g; }
private static GamePadState PlatformGetState(int index, GamePadDeadZone deadZoneMode) { var gamepads = navigator.getGamepads(); if (gamepads.Length <= index || gamepads[index] == null) { return(new GamePadState()); } var gamepad = gamepads[index]; if (gamepad.mapping != GamepadMappingType.standard) { return(new GamePadState { IsConnected = gamepad.connected, PacketNumber = (int)gamepad.timestamp }); } var buttons = new GamePadButtons( (gamepad.buttons.Length > 0 && gamepad.buttons[0].pressed ? Buttons.A : 0) | (gamepad.buttons.Length > 1 && gamepad.buttons[1].pressed ? Buttons.B : 0) | (gamepad.buttons.Length > 8 && gamepad.buttons[8].pressed ? Buttons.Back : 0) | (gamepad.buttons.Length > 16 && gamepad.buttons[16].pressed ? Buttons.BigButton : 0) | (gamepad.buttons.Length > 4 && gamepad.buttons[4].pressed ? Buttons.LeftShoulder : 0) | (gamepad.buttons.Length > 5 && gamepad.buttons[5].pressed ? Buttons.RightShoulder : 0) | (gamepad.buttons.Length > 10 && gamepad.buttons[10].pressed ? Buttons.LeftStick : 0) | (gamepad.buttons.Length > 11 && gamepad.buttons[11].pressed ? Buttons.RightStick : 0) | (gamepad.buttons.Length > 9 && gamepad.buttons[9].pressed ? Buttons.Start : 0) | (gamepad.buttons.Length > 2 && gamepad.buttons[2].pressed ? Buttons.X : 0) | (gamepad.buttons.Length > 3 && gamepad.buttons[3].pressed ? Buttons.Y : 0) | (gamepad.buttons.Length > 6 && gamepad.buttons[6].pressed ? Buttons.LeftTrigger : 0) | (gamepad.buttons.Length > 7 && gamepad.buttons[7].pressed ? Buttons.RightTrigger : 0) ); var dpad = new GamePadDPad( gamepad.buttons.Length > 12 && gamepad.buttons[12].pressed ? ButtonState.Pressed : ButtonState.Released, gamepad.buttons.Length > 13 && gamepad.buttons[13].pressed ? ButtonState.Pressed : ButtonState.Released, gamepad.buttons.Length > 14 && gamepad.buttons[14].pressed ? ButtonState.Pressed : ButtonState.Released, gamepad.buttons.Length > 15 && gamepad.buttons[15].pressed ? ButtonState.Pressed : ButtonState.Released ); var thumbsticks = new GamePadThumbSticks( gamepad.axes.Length >= 2 ? new Vector2((float)gamepad.axes[0], (float)gamepad.axes[1]) : Vector2.Zero, gamepad.axes.Length >= 4 ? new Vector2((float)gamepad.axes[2], (float)gamepad.axes[3]) : Vector2.Zero, deadZoneMode ); var triggers = new GamePadTriggers( gamepad.buttons.Length > 6 && gamepad.buttons[6].pressed ? 1 : 0, gamepad.buttons.Length > 7 && gamepad.buttons[7].pressed ? 1 : 0 ); return(new GamePadState { IsConnected = gamepad.connected, PacketNumber = (int)gamepad.timestamp, Buttons = buttons, DPad = dpad, ThumbSticks = thumbsticks, Triggers = triggers }); }
private InputState createInputState(ref GamePadDPad dpad, ref GamePadButtons buttons) { InputState input = new InputState(); input.initPreviousMove(this.previousInput); input.set(InputState.Move.UP, dpad.Up == ButtonState.Pressed || buttons.Y == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.W) || Keyboard.GetState().IsKeyDown(Keys.Up)); input.set(InputState.Move.DOWN, dpad.Down == ButtonState.Pressed || buttons.A == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.S) || Keyboard.GetState().IsKeyDown(Keys.Down)); input.set(InputState.Move.LEFT, dpad.Left == ButtonState.Pressed || buttons.X == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.A) || Keyboard.GetState().IsKeyDown(Keys.Left)); input.set(InputState.Move.RIGHT, dpad.Right == ButtonState.Pressed || buttons.B == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.D) || Keyboard.GetState().IsKeyDown(Keys.Right)); input.set(InputState.Control.EXIT, buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape)); input.set(InputState.Control.BACK, buttons.B == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape) || Keyboard.GetState().IsKeyDown(Keys.Back)); input.set(InputState.Control.PAUSE, buttons.Start == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.P) || Keyboard.GetState().IsKeyDown(Keys.Space)); input.set(InputState.Control.SELECT, buttons.A == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Enter)); input.set(InputState.Control.UP, dpad.Up == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.W) || Keyboard.GetState().IsKeyDown(Keys.Up)); input.set(InputState.Control.DOWN, dpad.Down == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.S) || Keyboard.GetState().IsKeyDown(Keys.Down)); input.set(InputState.Control.LEFT, dpad.Left == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.A) || Keyboard.GetState().IsKeyDown(Keys.Left)); input.set(InputState.Control.RIGHT, dpad.Right == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.D) || Keyboard.GetState().IsKeyDown(Keys.Right)); return input; }
private static List<ButtonState> DPadPressedStateArray(GamePadDPad a_dPad) { var states = new List<ButtonState> { a_dPad.Down, a_dPad.Left, a_dPad.Right, a_dPad.Up }; return states; }
internal void FireEvents(GamePadDPad currentButtonState, GamePadDPad lastButtonState) { if (LeftArrowPressed != null && currentButtonState.Left == ButtonState.Pressed && lastButtonState.Left == ButtonState.Released) { LeftArrowPressed(this, EventArgs.Empty); } else if (LeftArrowReleased != null && lastButtonState.Left == ButtonState.Pressed && currentButtonState.Left == ButtonState.Released) { LeftArrowReleased(this, EventArgs.Empty); } if (RightArrowPressed != null && currentButtonState.Right == ButtonState.Pressed && lastButtonState.Right == ButtonState.Released) { RightArrowPressed(this, EventArgs.Empty); } else if (RightArrowReleased != null && lastButtonState.Right == ButtonState.Pressed && currentButtonState.Right == ButtonState.Released) { RightArrowReleased(this, EventArgs.Empty); } if (UpArrowPressed != null && currentButtonState.Up == ButtonState.Pressed && lastButtonState.Up == ButtonState.Released) { UpArrowPressed(this, EventArgs.Empty); } else if (UpArrowReleased != null && lastButtonState.Up == ButtonState.Pressed && currentButtonState.Up == ButtonState.Released) { UpArrowReleased(this, EventArgs.Empty); } if (DownArrowPressed != null && currentButtonState.Down == ButtonState.Pressed && lastButtonState.Down == ButtonState.Released) { DownArrowPressed(this, EventArgs.Empty); } else if (DownArrowReleased != null && lastButtonState.Down == ButtonState.Pressed && currentButtonState.Down == ButtonState.Released) { DownArrowReleased(this, EventArgs.Empty); } }
using System;