public GamePadState(GamePadThumbSticks thumbs, GamePadTriggers triggers, GamePadButtons gamePadButtons, GamePadDPad dPad) { _thumbs = thumbs; _triggers = triggers; ConvertGamePadButtonsToButtons(ref gamePadButtons, out _buttons); _dPad = dPad; }
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 bool Update(DateTime timeStamp, xinput.GamePadButtons curr) { if (curr == _previous) { return(false); } _timeStamp = timeStamp; _a = (curr.A == xinput.ButtonState.Pressed); _b = (curr.B == xinput.ButtonState.Pressed); _x = (curr.X == xinput.ButtonState.Pressed); _y = (curr.Y == xinput.ButtonState.Pressed); _leftStick = (curr.LeftStick == xinput.ButtonState.Pressed); _rightStick = (curr.RightStick == xinput.ButtonState.Pressed); _leftShoulder = (curr.LeftShoulder == xinput.ButtonState.Pressed); _rightShoulder = (curr.RightShoulder == xinput.ButtonState.Pressed); _back = (curr.Back == xinput.ButtonState.Pressed); _start = (curr.Start == xinput.ButtonState.Pressed); _previous = curr; return(true); }
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); }
internal GamePadInputState(PlayerIndex playerIndex) { _playerIndex = playerIndex; Triggers = new GamePadTriggers(); ThumbSticks = new GamePadThumbSticks(); Buttons = new GamePadButtons(); }
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; }
// // 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); }
// // 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 static void ConvertGamePadButtonsToButtons(ref GamePadButtons gamePadButtons, out Buttons buttons) { buttons = new Buttons(); if (gamePadButtons.A == ButtonState.Pressed) { buttons |= Microsoft.Xna.Framework.Input.Buttons.A; } if (gamePadButtons.B == ButtonState.Pressed) { buttons |= Microsoft.Xna.Framework.Input.Buttons.B; } if (gamePadButtons.X == ButtonState.Pressed) { buttons |= Microsoft.Xna.Framework.Input.Buttons.X; } if (gamePadButtons.Y == ButtonState.Pressed) { buttons |= Microsoft.Xna.Framework.Input.Buttons.Y; } if (gamePadButtons.Back == ButtonState.Pressed) { buttons |= Microsoft.Xna.Framework.Input.Buttons.Back; } if (gamePadButtons.Start == ButtonState.Pressed) { buttons |= Microsoft.Xna.Framework.Input.Buttons.Start; } if (gamePadButtons.BigButton == ButtonState.Pressed) { buttons |= Microsoft.Xna.Framework.Input.Buttons.BigButton; } if (gamePadButtons.LeftShoulder == ButtonState.Pressed) { buttons |= Microsoft.Xna.Framework.Input.Buttons.LeftShoulder; } if (gamePadButtons.RightShoulder == ButtonState.Pressed) { buttons |= Microsoft.Xna.Framework.Input.Buttons.RightShoulder; } if (gamePadButtons.LeftStick == ButtonState.Pressed) { buttons |= Microsoft.Xna.Framework.Input.Buttons.LeftStick; } if (gamePadButtons.RightStick == ButtonState.Pressed) { buttons |= Microsoft.Xna.Framework.Input.Buttons.RightStick; } }
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)); }
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;
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) { 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 }); }
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) { 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 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; }
/// <summary> /// Generates a GamePadState based on the touch input provided (as applied to the on screen controls) and the gamepad state /// </summary> public GamePadState GetState(TouchCollection touchState, GamePadState gpState) { //Work out what buttons are pressed based on the touchState Buttons buttonsPressed = 0; foreach (TouchLocation touch in touchState) { if (touch.State == TouchLocationState.Moved || touch.State == TouchLocationState.Pressed) { //Scale the touch position to be in _baseScreenSize coordinates Vector2 pos = touch.Position; Vector2.Transform(ref pos, ref globalTransformation, out pos); if (pos.X < 128) buttonsPressed |= Buttons.DPadLeft; else if (pos.X < 256) buttonsPressed |= Buttons.DPadRight; else if (pos.X >= baseScreenSize.X - 128) buttonsPressed |= Buttons.A; } } //Combine the buttons of the real gamepad GamePadButtons gpButtons = gpState.Buttons; buttonsPressed |= (gpButtons.A == ButtonState.Pressed ? Buttons.A : 0); buttonsPressed |= (gpButtons.B == ButtonState.Pressed ? Buttons.B : 0); buttonsPressed |= (gpButtons.X == ButtonState.Pressed ? Buttons.X : 0); buttonsPressed |= (gpButtons.Y == ButtonState.Pressed ? Buttons.Y : 0); buttonsPressed |= (gpButtons.Start == ButtonState.Pressed ? Buttons.Start : 0); buttonsPressed |= (gpButtons.Back == ButtonState.Pressed ? Buttons.Back : 0); buttonsPressed |= gpState.IsButtonDown(Buttons.DPadDown) ? Buttons.DPadDown : 0; buttonsPressed |= gpState.IsButtonDown(Buttons.DPadLeft) ? Buttons.DPadLeft : 0; buttonsPressed |= gpState.IsButtonDown(Buttons.DPadRight) ? Buttons.DPadRight : 0; buttonsPressed |= gpState.IsButtonDown(Buttons.DPadUp) ? Buttons.DPadUp : 0; buttonsPressed |= (gpButtons.BigButton == ButtonState.Pressed ? Buttons.BigButton : 0); buttonsPressed |= (gpButtons.LeftShoulder == ButtonState.Pressed ? Buttons.LeftShoulder : 0); buttonsPressed |= (gpButtons.RightShoulder == ButtonState.Pressed ? Buttons.RightShoulder : 0); buttonsPressed |= (gpButtons.LeftStick == ButtonState.Pressed ? Buttons.LeftStick : 0); buttonsPressed |= (gpButtons.RightStick == ButtonState.Pressed ? Buttons.RightStick : 0); var buttons = new GamePadButtons(buttonsPressed); return new GamePadState(gpState.ThumbSticks, gpState.Triggers, buttons, gpState.DPad); }
/// <summary> /// ワールドの更新、衝突判定、入力値の取得、オーディオの再生などの /// ゲーム ロジックを、実行します。 /// </summary> /// <param name="gameTime">ゲームの瞬間的なタイミング情報</param> protected override void Update(GameTime gameTime) { // ゲームの終了条件をチェックします。 if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || (!beforeState.IsKeyDown(Keys.Escape) && Keyboard.GetState().IsKeyDown(Keys.Escape))) this.Exit();//ゲーム終了 //エンターを入力すると if ((!beforeState.IsKeyDown(Keys.Enter) && Keyboard.GetState().IsKeyDown(Keys.Enter)) || (GamePad.GetState(PlayerIndex.One).Buttons.A== ButtonState.Pressed)) { //再生した後ならリセットをかける if (model.AnimationPlayer["TrueMyHeart"].NowFrame > 0) { //停止 model.AnimationPlayer["TrueMyHeart"].Stop(); //巻き戻し model.AnimationPlayer["TrueMyHeart"].Reset(); //剛体位置のリセット model.PhysicsManager.Reset(); } //モーションの再生 model.AnimationPlayer["TrueMyHeart"].Start(); } //MMDのUpdateを呼び出す MMDXCore.Instance.Update((float)gameTime.ElapsedGameTime.TotalSeconds); base.Update(gameTime); //キーボードの状態を記録 beforeState = Keyboard.GetState(); beforeButtons = GamePad.GetState(PlayerIndex.One).Buttons; }
internal static void ConvertGamePadButtonsToButtons(ref GamePadButtons gamePadButtons, out Buttons buttons) { buttons = new Buttons(); if (gamePadButtons.A == ButtonState.Pressed) { buttons |= Microsoft.Xna.Framework.Input.Buttons.A; } if (gamePadButtons.B == ButtonState.Pressed) { buttons |= Microsoft.Xna.Framework.Input.Buttons.B; } if (gamePadButtons.X == ButtonState.Pressed) { buttons |= Microsoft.Xna.Framework.Input.Buttons.X; } if (gamePadButtons.Y == ButtonState.Pressed) { buttons |= Microsoft.Xna.Framework.Input.Buttons.Y; } if (gamePadButtons.Back == ButtonState.Pressed) { buttons |= Microsoft.Xna.Framework.Input.Buttons.Back; } if (gamePadButtons.Start == ButtonState.Pressed) { buttons |= Microsoft.Xna.Framework.Input.Buttons.Start; } if (gamePadButtons.BigButton == ButtonState.Pressed) { buttons |= Microsoft.Xna.Framework.Input.Buttons.BigButton; } if (gamePadButtons.LeftShoulder == ButtonState.Pressed) { buttons |= Microsoft.Xna.Framework.Input.Buttons.LeftShoulder; } if (gamePadButtons.RightShoulder == ButtonState.Pressed) { buttons |= Microsoft.Xna.Framework.Input.Buttons.RightShoulder; } if (gamePadButtons.LeftStick == ButtonState.Pressed) { buttons |= Microsoft.Xna.Framework.Input.Buttons.LeftStick; } if (gamePadButtons.RightStick == ButtonState.Pressed) { buttons |= Microsoft.Xna.Framework.Input.Buttons.RightStick; } }
/// <summary> /// Checks if the buttons have changed and if so triggers the event /// </summary> /// <param name="ControllerNum">The currently polling controller</param> /// <param name="button">The local enum button being checked</param> /// <param name="current">The current value of the button being checked</param> /// <param name="previous">The previous value of the button being checked</param> private void CheckButtonsChanged(GamePadNumber ControllerNum, GamePadButtons button, ButtonState current, ButtonState previous) { if (current != previous) OnButtonStateChanged(this, new ButtonStateEventArgs(ControllerNum, button, current == ButtonState.Pressed)); }
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 bool gamepadBackPressed(GamePadButtons b) { return (b.Back == ButtonState.Pressed); }
internal void FireEvents(GamePadButtons currentButtonState, GamePadButtons lastButtonState) { //TODO: Finish if (AButtonPressed != null && currentButtonState.A == ButtonState.Pressed && lastButtonState.A == ButtonState.Released) { AButtonPressed(this, EventArgs.Empty); } else if (AButtonReleased != null && currentButtonState.A == ButtonState.Released && lastButtonState.A == ButtonState.Pressed) { AButtonReleased(this, EventArgs.Empty); } if (BButtonPressed != null && currentButtonState.B == ButtonState.Pressed && lastButtonState.B == ButtonState.Released) { BButtonPressed(this, EventArgs.Empty); } else if (BButtonReleased != null && currentButtonState.B == ButtonState.Released && lastButtonState.B == ButtonState.Pressed) { BButtonReleased(this, EventArgs.Empty); } if (YButtonPressed != null && currentButtonState.Y == ButtonState.Pressed && lastButtonState.Y == ButtonState.Released) { YButtonPressed(this, EventArgs.Empty); } else if (YButtonReleased != null && currentButtonState.Y == ButtonState.Released && lastButtonState.Y == ButtonState.Pressed) { YButtonReleased(this, EventArgs.Empty); } if (XButtonPressed != null && currentButtonState.X == ButtonState.Pressed && lastButtonState.X == ButtonState.Released) { XButtonPressed(this, EventArgs.Empty); } else if (XButtonReleased != null && currentButtonState.X == ButtonState.Released && lastButtonState.X == ButtonState.Pressed) { XButtonReleased(this, EventArgs.Empty); } if (LeftShoulderPressed != null && currentButtonState.LeftShoulder == ButtonState.Pressed && lastButtonState.LeftShoulder == ButtonState.Released) { LeftShoulderPressed(this, EventArgs.Empty); } else if (LeftShoulderReleased != null && currentButtonState.LeftShoulder == ButtonState.Released && lastButtonState.LeftShoulder == ButtonState.Pressed) { LeftShoulderReleased(this, EventArgs.Empty); } if (RightShoulderPressed != null && currentButtonState.RightShoulder == ButtonState.Pressed && lastButtonState.RightShoulder == ButtonState.Released) { RightShoulderPressed(this, EventArgs.Empty); } else if (RightShoulderReleased != null && currentButtonState.RightShoulder == ButtonState.Released && lastButtonState.RightShoulder == ButtonState.Pressed) { RightShoulderReleased(this, EventArgs.Empty); } if (StartButtonPressed != null && currentButtonState.Start == ButtonState.Pressed && lastButtonState.Start == ButtonState.Released) { StartButtonPressed(this, EventArgs.Empty); } else if (StartButtonReleased != null && currentButtonState.Start == ButtonState.Released && lastButtonState.Start == ButtonState.Pressed) { StartButtonReleased(this, EventArgs.Empty); } if (BackButtonPressed != null && currentButtonState.Back == ButtonState.Pressed && lastButtonState.Back == ButtonState.Released) { BackButtonPressed(this, EventArgs.Empty); } else if (BackButtonReleased != null && currentButtonState.Back == ButtonState.Released && lastButtonState.Back == ButtonState.Pressed) { BackButtonReleased(this, EventArgs.Empty); } }
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; }
public void Update(GameTime gametime,Vector2 playerPos) { SetOldState(); inputkeys.Clear(); menukeys.Clear(); gamepadhandler.Update(gametime, run_factor, playerPos); keyboardhandler.Update(gametime, run_factor, playerPos); keyboardstate = keyboardhandler.getDownKeys; gamepadstate = gamepadhandler.GetState.Buttons; switch (controller) { case(Controller.Keyboard): pos = keyboardhandler.Pos; inputkeys.AddRange(keyboardhandler.GetInputKeys()); break; case(Controller.Xbox_360_Controller): pos = gamepadhandler.Pos; inputkeys.AddRange(gamepadhandler.GetInputKeys()); break; } if (inputkeys.Contains(InputKeys.Right) && inputkeys.Contains(InputKeys.Left)) { while (inputkeys.Contains(InputKeys.Left)) inputkeys.Remove(InputKeys.Left); while (inputkeys.Contains(InputKeys.Right)) inputkeys.Remove(InputKeys.Right); } CheckMenuKeys(gametime.GetElapsedTotalSecondsFloat()); }
/// <summary> /// Creates a default orthographic camera and lets it respond as if /// the game pad's buttons were in the specified state /// </summary> /// <param name="buttons">State of the game pad's buttons</param> /// <returns>The camera after it has responded to the provided controls</returns> private Camera handleControlsOnDefaultCamera(GamePadButtons buttons) { return handleControlsOnDefaultCamera( new KeyboardState(), new GamePadState( new GamePadThumbSticks(), new GamePadTriggers(), buttons, new GamePadDPad() ) ); }
/// <summary> /// Check if the GamePadKey value specified is pressed. /// </summary> private static bool IsGamePadButtonPressed(GamePadButtons gamePadKey) { switch (gamePadKey) { case GamePadButtons.Start: return IsGamePadStartPressed(); case GamePadButtons.Back: return IsGamePadBackPressed(); case GamePadButtons.A: return IsGamePadAPressed(); case GamePadButtons.B: return IsGamePadBPressed(); case GamePadButtons.X: return IsGamePadXPressed(); case GamePadButtons.Y: return IsGamePadYPressed(); case GamePadButtons.LeftShoulder: return IsGamePadLeftShoulderPressed(); case GamePadButtons.RightShoulder: return IsGamePadRightShoulderPressed(); case GamePadButtons.LeftTrigger: return IsGamePadLeftTriggerPressed(); case GamePadButtons.RightTrigger: return IsGamePadRightTriggerPressed(); case GamePadButtons.Up: return IsGamePadDPadUpPressed() || IsGamePadLeftStickUpPressed(); case GamePadButtons.Down: return IsGamePadDPadDownPressed() || IsGamePadLeftStickDownPressed(); case GamePadButtons.Left: return IsGamePadDPadLeftPressed() || IsGamePadLeftStickLeftPressed(); case GamePadButtons.Right: return IsGamePadDPadRightPressed() || IsGamePadLeftStickRightPressed(); } return false; }
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 virtual bool OnKeyDown(GamePadButtons button) { return true; }
/* Initializes a new instance of the GamePadState class with the specified * stick, trigger, and button values. */ public GamePadState( Vector2 leftThumbStick, Vector2 rightThumbStick, float leftTrigger, float rightTrigger, params Buttons[] buttons ) : this() { ThumbSticks = new GamePadThumbSticks(leftThumbStick, rightThumbStick); Triggers = new GamePadTriggers(leftTrigger, rightTrigger); Buttons = new GamePadButtons(); for(int i = 0; i < buttons.Length; i++) { switch(buttons[i]) { /* Buttons */ case Microsoft.Xna.Framework.Input.Buttons.A: Buttons.A = ButtonState.Pressed; break; case Microsoft.Xna.Framework.Input.Buttons.B: Buttons.B = ButtonState.Pressed; break; case Microsoft.Xna.Framework.Input.Buttons.Back: Buttons.Back = ButtonState.Pressed; break; case Microsoft.Xna.Framework.Input.Buttons.BigButton: Buttons.BigButton = ButtonState.Pressed; break; case Microsoft.Xna.Framework.Input.Buttons.LeftShoulder: Buttons.LeftShoulder = ButtonState.Pressed; break; case Microsoft.Xna.Framework.Input.Buttons.LeftStick: Buttons.LeftStick = ButtonState.Pressed; break; case Microsoft.Xna.Framework.Input.Buttons.RightShoulder: Buttons.RightShoulder = ButtonState.Pressed; break; case Microsoft.Xna.Framework.Input.Buttons.RightStick: Buttons.RightStick = ButtonState.Pressed; break; case Microsoft.Xna.Framework.Input.Buttons.Start: Buttons.Start = ButtonState.Pressed; break; case Microsoft.Xna.Framework.Input.Buttons.X: Buttons.X = ButtonState.Pressed; break; case Microsoft.Xna.Framework.Input.Buttons.Y: Buttons.Y = ButtonState.Pressed; break; /* DPad */ case Microsoft.Xna.Framework.Input.Buttons.DPadDown: DPad.Down = ButtonState.Pressed; break; case Microsoft.Xna.Framework.Input.Buttons.DPadLeft: DPad.Left = ButtonState.Pressed; break; case Microsoft.Xna.Framework.Input.Buttons.DPadRight: DPad.Right = ButtonState.Pressed; break; case Microsoft.Xna.Framework.Input.Buttons.DPadUp: DPad.Up = ButtonState.Pressed; break; } } }
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 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; }
// // 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(); }
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; }
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; }
/// <summary> /// Check if the GamePadKey value specified was pressed this frame. /// </summary> private static bool IsGamePadButtonTriggered(GamePadButtons gamePadKey) { switch (gamePadKey) { case GamePadButtons.Start: return IsGamePadStartTriggered(); case GamePadButtons.Back: return IsGamePadBackTriggered(); case GamePadButtons.A: return IsGamePadATriggered(); case GamePadButtons.B: return IsGamePadBTriggered(); case GamePadButtons.X: return IsGamePadXTriggered(); case GamePadButtons.Y: return IsGamePadYTriggered(); case GamePadButtons.LeftShoulder: return IsGamePadLeftShoulderTriggered(); case GamePadButtons.RightShoulder: return IsGamePadRightShoulderTriggered(); case GamePadButtons.LeftTrigger: return IsGamePadLeftTriggerTriggered(); case GamePadButtons.RightTrigger: return IsGamePadRightTriggerTriggered(); case GamePadButtons.Up: return IsGamePadDPadUpTriggered() || IsGamePadLeftStickUpTriggered(); case GamePadButtons.Down: return IsGamePadDPadDownTriggered() || IsGamePadLeftStickDownTriggered(); case GamePadButtons.Left: return IsGamePadDPadLeftTriggered() || IsGamePadLeftStickLeftTriggered(); case GamePadButtons.Right: return IsGamePadDPadRightTriggered() || IsGamePadLeftStickRightTriggered(); } return false; }
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> /// This function will change the Control binding of a single button to /// another button on the gamepad. /// </summary> /// <param name="oldbutton">The action that corresponds to a button that will be changed</param> /// <param name="newButton">The button on the gamepad that the action will now be set to</param> /// <param name="gamepad">The gamepadState that is already in place</param> public void changeGamepadBindings(ButtonState oldButton, GamePadButtons newButton, GamePadState gamepad) { //TODO: }
using System;