Beispiel #1
0
 public GamePadState(GamePadThumbSticks thumbs, GamePadTriggers triggers, GamePadButtons gamePadButtons, GamePadDPad dPad)
 {
     _thumbs = thumbs;
     _triggers = triggers;
     ConvertGamePadButtonsToButtons(ref gamePadButtons, out _buttons);
     _dPad = dPad;
 }
Beispiel #2
0
        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);
        }
Beispiel #5
0
 public GamePadState(GamePadThumbSticks thumbs, GamePadTriggers triggers, GamePadButtons gamePadButtons, GamePadDPad dPad)
 {
     _thumbs   = thumbs;
     _triggers = triggers;
     ConvertGamePadButtonsToButtons(ref gamePadButtons, out _buttons);
     _dPad = dPad;
 }
Beispiel #6
0
        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();
 }
Beispiel #8
0
        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);
        }
Beispiel #9
0
 //
 // 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;
 }
Beispiel #10
0
 //
 // 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;
 }
Beispiel #11
0
 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;
 }
Beispiel #12
0
        public void SetCurrentState(KeyboardState keyBoardState)
        {
            _keyBoardState = keyBoardState;

            _buttons = new GamePadButtons(_keyBoardState);
            _triggers = new GamePadTriggers(_keyBoardState);
            _thumbSticks = new GamePadThumbSticks(_keyBoardState);
            _dpad = new GamePadDPad(_keyBoardState);
        }
Beispiel #13
0
        //
        // 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();
        }
Beispiel #14
0
        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;
 }
Beispiel #17
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;
     }
 }
Beispiel #18
0
        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;
        }
Beispiel #19
0
        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));
        }
Beispiel #20
0
        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);
        }
Beispiel #21
0
        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;
Beispiel #22
0
        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
            });
        }
Beispiel #24
0
        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;
        }
Beispiel #25
0
        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;
        }
Beispiel #26
0
        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);
        }
Beispiel #28
0
 /// <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;
     
 }
Beispiel #29
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;
     }
 }
Beispiel #30
0
 /// <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));
 }
Beispiel #31
0
        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;
        }
Beispiel #32
0
 private bool gamepadBackPressed(GamePadButtons b)
 {
     return (b.Back == ButtonState.Pressed);
 }
Beispiel #33
0
        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);
            }
        }
Beispiel #34
0
        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;
        }
Beispiel #35
0
 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());
 }
Beispiel #36
0
 /// <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()
     )
   );
 }
Beispiel #37
0
        /// <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;
        }
Beispiel #38
0
        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);
        }
Beispiel #39
0
 public virtual bool OnKeyDown(GamePadButtons button)
 {
     return true;
 }
Beispiel #40
0
        /* 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;

                }
            }
        }
Beispiel #41
0
        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;
        }
Beispiel #42
0
        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;
        }
Beispiel #43
0
        //
        // 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();
        }
Beispiel #44
0
        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;
        }
Beispiel #45
0
 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;
 }
Beispiel #46
0
        /// <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;
        }
Beispiel #47
0
 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:
 }
Beispiel #49
0
using System;