Example #1
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);
        }
Example #2
0
 internal GamePadState(Buttons buttons, Vector2 LeftStick, Vector2 RightStick)
 {
     _buttons  = buttons;
     _thumbs   = new GamePadThumbSticks(LeftStick, RightStick);
     _dPad     = new GamePadDPad();
     _triggers = new GamePadTriggers();
 }
Example #3
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);
        }
Example #4
0
 public GamePadState(GamePadThumbSticks thumbs, GamePadTriggers triggers, GamePadButtons gamePadButtons, GamePadDPad dPad)
 {
     _thumbs = thumbs;
     _triggers = triggers;
     ConvertGamePadButtonsToButtons(ref gamePadButtons, out _buttons);
     _dPad = dPad;
 }
Example #5
0
 public GamePadState(GamePadThumbSticks thumbs, GamePadTriggers triggers, GamePadButtons gamePadButtons, GamePadDPad dPad)
 {
     _thumbs   = thumbs;
     _triggers = triggers;
     ConvertGamePadButtonsToButtons(ref gamePadButtons, out _buttons);
     _dPad = dPad;
 }
        private static GamePadState PlatformGetState(int index, GamePadDeadZone leftDeadZoneMode, GamePadDeadZone rightDeadZoneMode)
        {
            var state = GamePadState.Default;
            var jcap  = Joystick.GetCapabilities(index);

            if (jcap.IsConnected)
            {
                state.IsConnected = true;

                var jstate = Joystick.GetState(index);

                if (!GamePadCache.ContainsKey(jcap.Identifier))
                {
                    GamePadCache.Add(jcap.Identifier, Configurations.ContainsKey(jcap.Identifier) ? new GamepadTranslator(Configurations[jcap.Identifier]) : new GamepadTranslator(""));
                }

                var gpc = GamePadCache[jcap.Identifier];

                Buttons buttons =
                    (gpc.ButtonPressed("a", jstate) ? Buttons.A : 0) |
                    (gpc.ButtonPressed("b", jstate) ? Buttons.B : 0) |
                    (gpc.ButtonPressed("back", jstate) ? Buttons.Back : 0) |
                    (gpc.ButtonPressed("guide", jstate) ? Buttons.BigButton : 0) |
                    (gpc.ButtonPressed("leftshoulder", jstate) ? Buttons.LeftShoulder : 0) |
                    (gpc.ButtonPressed("leftstick", jstate) ? Buttons.LeftStick : 0) |
                    (gpc.ButtonPressed("rightshoulder", jstate) ? Buttons.RightShoulder : 0) |
                    (gpc.ButtonPressed("rightstick", jstate) ? Buttons.RightStick : 0) |
                    (gpc.ButtonPressed("start", jstate) ? Buttons.Start : 0) |
                    (gpc.ButtonPressed("x", jstate) ? Buttons.X : 0) |
                    (gpc.ButtonPressed("y", jstate) ? Buttons.Y : 0) |
                    0;

                var sticks =
                    new GamePadThumbSticks(
                        new Vector2(gpc.AxisPressed("leftx", jstate), gpc.AxisPressed("lefty", jstate)),
                        new Vector2(gpc.AxisPressed("rightx", jstate), gpc.AxisPressed("righty", jstate)),
                        leftDeadZoneMode,
                        rightDeadZoneMode
                        );

                var dpad =
                    new GamePadDPad(
                        gpc.DpadPressed("dpup", jstate) ? ButtonState.Pressed : ButtonState.Released,
                        gpc.DpadPressed("dpdown", jstate) ? ButtonState.Pressed : ButtonState.Released,
                        gpc.DpadPressed("dpleft", jstate) ? ButtonState.Pressed : ButtonState.Released,
                        gpc.DpadPressed("dpright", jstate) ? ButtonState.Pressed : ButtonState.Released
                        );

                var triggers =
                    new GamePadTriggers(
                        gpc.TriggerPressed("lefttrigger", jstate),
                        gpc.TriggerPressed("righttrigger", jstate)
                        );


                state = new GamePadState(sticks, triggers, new GamePadButtons(buttons), dpad);
            }

            return(state);
        }
Example #7
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();
 }
Example #9
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);
        }
Example #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;
 }
Example #11
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;
 }
Example #12
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;
 }
Example #13
0
        public void SetCurrentState(KeyboardState keyBoardState)
        {
            _keyBoardState = keyBoardState;

            _buttons = new GamePadButtons(_keyBoardState);
            _triggers = new GamePadTriggers(_keyBoardState);
            _thumbSticks = new GamePadThumbSticks(_keyBoardState);
            _dpad = new GamePadDPad(_keyBoardState);
        }
Example #14
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;
 }
Example #15
0
        private static GamePadState PlatformGetState(int index, GamePadDeadZone deadZoneMode)
        {
            // If the device was disconneced then wait for
            // the timeout to elapsed before we test it again.
            if (!_connected[index] && _timeout[index] > DateTime.UtcNow.Ticks)
            {
                return(new GamePadState());
            }

            // Try to get the controller state.
            SharpDX.XInput.State xistate;
            var controller = _controllers[index];

            _connected[index] = controller.GetState(out xistate);
            var gamepad = xistate.Gamepad;

            // If the device is disconnected retry it after the
            // timeout period has elapsed to avoid the overhead.
            if (!_connected[index])
            {
                _timeout[index] = DateTime.UtcNow.Ticks + TimeoutTicks;
                return(new GamePadState());
            }

            var thumbSticks = new GamePadThumbSticks(
                leftPosition: ConvertThumbStick(gamepad.LeftThumbX, gamepad.LeftThumbY,
                                                SharpDX.XInput.Gamepad.LeftThumbDeadZone, deadZoneMode),
                rightPosition: ConvertThumbStick(gamepad.RightThumbX, gamepad.RightThumbY,
                                                 SharpDX.XInput.Gamepad.RightThumbDeadZone, deadZoneMode));

            var triggers = new GamePadTriggers(
                leftTrigger: gamepad.LeftTrigger / (float)byte.MaxValue,
                rightTrigger: gamepad.RightTrigger / (float)byte.MaxValue);

            var dpadState = new GamePadDPad(
                upValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadUp),
                downValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadDown),
                leftValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadLeft),
                rightValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadRight));

            var buttons = ConvertToButtons(
                buttonFlags: gamepad.Buttons,
                leftThumbX: gamepad.LeftThumbX,
                leftThumbY: gamepad.LeftThumbY,
                rightThumbX: gamepad.RightThumbX,
                rightThumbY: gamepad.RightThumbY,
                leftTrigger: gamepad.LeftTrigger,
                rightTrigger: gamepad.RightTrigger);

            var state = new GamePadState(
                thumbSticks: thumbSticks,
                triggers: triggers,
                buttons: buttons,
                dPad: dpadState);

            return(state);
        }
Example #16
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();
        }
Example #17
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);
        }
Example #18
0
 /// <summary>
 /// Initializes a new instance of the GamePadState class using the specified
 /// GamePadThumbSticks, GamePadTriggers, GamePadButtons, and GamePadDPad.
 /// </summary>
 /// <param name="thumbSticks">Initial thumbstick state.</param>
 /// <param name="triggers">Initial trigger state.</param>
 /// <param name="buttons">Initial button state.</param>
 /// <param name="dPad">Initial directional pad state.</param>
 public GamePadState(
     GamePadThumbSticks thumbSticks,
     GamePadTriggers triggers,
     GamePadButtons buttons,
     GamePadDPad dPad
     ) : this()
 {
     ThumbSticks  = thumbSticks;
     Triggers     = triggers;
     Buttons      = buttons;
     DPad         = dPad;
     IsConnected  = true;
     PacketNumber = 0;
 }
        internal bool Update(DateTime timeStamp, xinput.GamePadTriggers curr)
        {
            if (_left == curr.Left &&
                _right == curr.Right)
            {
                return(false);
            }

            _timeStamp = timeStamp;

            _left  = curr.Left;
            _right = curr.Right;

            _previous = curr;
            return(true);
        }
Example #20
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;
        }
Example #21
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));
        }
Example #22
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);
        }
Example #23
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;
Example #24
0
        public static Microsoft.Xna.Framework.Input.GamePadState GetState(PlayerIndex playerIndex,
                                                                          Microsoft.Xna.Framework.Input.GamePadDeadZone deadZoneMode)
        {
            var controller = GetController(playerIndex);

            if (!controller.IsConnected)
            {
                return(new GamePadState()); // GamePadState.IsConnected = false by default
            }
            var gamepad = controller.GetState().Gamepad;

            var thumbSticks = new GamePadThumbSticks(
                leftPosition: ConvertThumbStick(gamepad.LeftThumbX, gamepad.LeftThumbY,
                                                SharpDX.XInput.Gamepad.LeftThumbDeadZone, deadZoneMode),
                rightPosition: ConvertThumbStick(gamepad.RightThumbX, gamepad.RightThumbY,
                                                 SharpDX.XInput.Gamepad.RightThumbDeadZone, deadZoneMode));

            var triggers = new GamePadTriggers(
                leftTrigger: gamepad.LeftTrigger / (float)byte.MaxValue,
                rightTrigger: gamepad.RightTrigger / (float)byte.MaxValue);

            var state = new GamePadState(
                thumbSticks: thumbSticks,
                triggers: triggers,
                buttons: ConvertToButtons(
                    buttonFlags: gamepad.Buttons,
                    leftThumbX: gamepad.LeftThumbX,
                    leftThumbY: gamepad.LeftThumbY,
                    rightThumbX: gamepad.RightThumbX,
                    rightThumbY: gamepad.RightThumbY,
                    leftTrigger: gamepad.LeftTrigger,
                    rightTrigger: gamepad.RightTrigger),
                dPad: ConvertToGamePadDPad(gamepad.Buttons));

            return(state);
        }
Example #25
0
        private static GamePadState PlatformGetState(int index, GamePadDeadZone leftDeadZoneMode, GamePadDeadZone rightDeadZoneMode)
        {
            // If the device was disconneced then wait for
            // the timeout to elapsed before we test it again.
            if (!_connected[index] && !HasDisconnectedTimeoutElapsed(index))
            {
                return(GetDefaultState());
            }

            int packetNumber = 0;

            // Try to get the controller state.
            var gamepad = new SharpDX.XInput.Gamepad();

            try
            {
                SharpDX.XInput.State xistate;
                var controller = _controllers[index];
                _connected[index] = controller.GetState(out xistate);
                packetNumber      = xistate.PacketNumber;
                gamepad           = xistate.Gamepad;
            }
            catch (Exception)
            {
            }

            // If the device is disconnected retry it after the
            // timeout period has elapsed to avoid the overhead.
            if (!_connected[index])
            {
                SetDisconnectedTimeout(index);
                return(GetDefaultState());
            }

            var thumbSticks = new GamePadThumbSticks(
                leftPosition: new Vector2(gamepad.LeftThumbX, gamepad.LeftThumbY) / (float)short.MaxValue,
                rightPosition: new Vector2(gamepad.RightThumbX, gamepad.RightThumbY) / (float)short.MaxValue,
                leftDeadZoneMode: leftDeadZoneMode,
                rightDeadZoneMode: rightDeadZoneMode);

            var triggers = new GamePadTriggers(
                leftTrigger: gamepad.LeftTrigger / (float)byte.MaxValue,
                rightTrigger: gamepad.RightTrigger / (float)byte.MaxValue);

            var dpadState = new GamePadDPad(
                upValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadUp),
                downValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadDown),
                leftValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadLeft),
                rightValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadRight));

            var buttons = ConvertToButtons(
                buttonFlags: gamepad.Buttons,
                leftTrigger: gamepad.LeftTrigger,
                rightTrigger: gamepad.RightTrigger);

            var state = new GamePadState(
                thumbSticks: thumbSticks,
                triggers: triggers,
                buttons: buttons,
                dPad: dpadState);

            state.PacketNumber = packetNumber;

            return(state);
        }
Example #26
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;
        }
Example #27
0
        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
            });
        }
Example #28
0
        public static GamePadState GetState(PlayerIndex playerIndex, GamePadDeadZone deadZoneMode)
        {
            // Make sure the player index is in range.
            var index = (int)playerIndex;
            if (index < (int)PlayerIndex.One || index > (int)PlayerIndex.Four)
                throw new InvalidOperationException();

            // If the device was disconneced then wait for 
            // the timeout to elapsed before we test it again.
            if (!_connected[index] && _timeout[index] > DateTime.UtcNow.Ticks)
                return new GamePadState();

            // Try to get the controller state.
            SharpDX.XInput.State xistate;
            var controller = _controllers[index];
            _connected[index] = controller.GetState(out xistate);
            var gamepad = xistate.Gamepad;

            // If the device is disconnected retry it after the
            // timeout period has elapsed to avoid the overhead.
            if (!_connected[index])
            {
                _timeout[index] = DateTime.UtcNow.Ticks + TimeoutTicks;
                return new GamePadState();
            }

            var thumbSticks = new GamePadThumbSticks(
                leftPosition: ConvertThumbStick(gamepad.LeftThumbX, gamepad.LeftThumbY,
                    SharpDX.XInput.Gamepad.LeftThumbDeadZone, deadZoneMode),
                rightPosition: ConvertThumbStick(gamepad.RightThumbX, gamepad.RightThumbY,
                    SharpDX.XInput.Gamepad.RightThumbDeadZone, deadZoneMode));

            var triggers = new GamePadTriggers(
                    leftTrigger: gamepad.LeftTrigger / (float)byte.MaxValue,
                    rightTrigger: gamepad.RightTrigger / (float)byte.MaxValue);

            var dpadState = new GamePadDPad(
                upValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadUp),
                downValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadDown),
                leftValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadLeft),
                rightValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadRight));

            var buttons = ConvertToButtons(
                buttonFlags: gamepad.Buttons,
                leftThumbX: gamepad.LeftThumbX,
                leftThumbY: gamepad.LeftThumbY,
                rightThumbX: gamepad.RightThumbX,
                rightThumbY: gamepad.RightThumbY,
                leftTrigger: gamepad.LeftTrigger,
                rightTrigger: gamepad.RightTrigger);

            var state = new GamePadState(
                thumbSticks: thumbSticks,
                triggers: triggers,
                buttons: buttons,
                dPad: dpadState);

            return state;
        }
Example #29
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;
        }
        private static GamePadState PlatformGetState(int index, GamePadDeadZone deadZoneMode)
        {
            // If the device was disconneced then wait for 
            // the timeout to elapsed before we test it again.
            if (!_connected[index] && _timeout[index] > DateTime.UtcNow.Ticks)
                return GetDefaultState();

            int packetNumber = 0;

            // Try to get the controller state.
            var gamepad = new SharpDX.XInput.Gamepad();
            try
            {
                SharpDX.XInput.State xistate;
                var controller = _controllers[index];
                _connected[index] = controller.GetState(out xistate);
                packetNumber = xistate.PacketNumber;
                gamepad = xistate.Gamepad;
            }
            catch (Exception ex)
            {
            }

            // If the device is disconnected retry it after the
            // timeout period has elapsed to avoid the overhead.
            if (!_connected[index])
            {
                _timeout[index] = DateTime.UtcNow.Ticks + TimeoutTicks;
                return GetDefaultState();
            }

            var thumbSticks = new GamePadThumbSticks(
                leftPosition: new Vector2(gamepad.LeftThumbX, gamepad.LeftThumbY) / (float)short.MaxValue,
                rightPosition: new Vector2(gamepad.RightThumbX, gamepad.RightThumbY) / (float)short.MaxValue,
                    deadZoneMode: deadZoneMode);

            var triggers = new GamePadTriggers(
                    leftTrigger: gamepad.LeftTrigger / (float)byte.MaxValue,
                    rightTrigger: gamepad.RightTrigger / (float)byte.MaxValue);

            var dpadState = new GamePadDPad(
                upValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadUp),
                downValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadDown),
                leftValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadLeft),
                rightValue: ConvertToButtonState(gamepad.Buttons, SharpDX.XInput.GamepadButtonFlags.DPadRight));

            var buttons = ConvertToButtons(
                buttonFlags: gamepad.Buttons,
                leftThumbX: gamepad.LeftThumbX,
                leftThumbY: gamepad.LeftThumbY,
                rightThumbX: gamepad.RightThumbX,
                rightThumbY: gamepad.RightThumbY,
                leftTrigger: gamepad.LeftTrigger,
                rightTrigger: gamepad.RightTrigger);

            var state = new GamePadState(
                thumbSticks: thumbSticks,
                triggers: triggers,
                buttons: buttons,
                dPad: dpadState);

            state.PacketNumber = packetNumber;

            return state;
        }
Example #31
0
        private static GamePadState PlatformGetState(int index, GamePadDeadZone deadZoneMode)
        {
            var state = GamePadState.Default;
            var jcap = Joystick.GetCapabilities(index);

            if (jcap.IsConnected)
            {
                state.IsConnected = true;

                var jstate = Joystick.GetState(index);

                if (!GamePadCache.ContainsKey(jcap.Id))
                    GamePadCache.Add(jcap.Id, Configurations.ContainsKey(jcap.Id) ? new GamepadTranslator(Configurations[jcap.Id]) : new GamepadTranslator(""));

                var gpc = GamePadCache[jcap.Id];

                Buttons buttons = 
                    (gpc.ButtonPressed("a", jstate) ? Buttons.A : 0) |
                    (gpc.ButtonPressed("b", jstate) ? Buttons.B : 0) |
                    (gpc.ButtonPressed("back", jstate) ? Buttons.Back : 0) |
                    (gpc.ButtonPressed("guide", jstate) ? Buttons.BigButton : 0) |
                    (gpc.ButtonPressed("leftshoulder", jstate) ? Buttons.LeftShoulder : 0) |
                    (gpc.ButtonPressed("leftstick", jstate) ? Buttons.LeftStick : 0) |
                    (gpc.ButtonPressed("rightshoulder", jstate) ? Buttons.RightShoulder : 0) |
                    (gpc.ButtonPressed("rightstick", jstate) ? Buttons.RightStick : 0) |
                    (gpc.ButtonPressed("start", jstate) ? Buttons.Start : 0) |
                    (gpc.ButtonPressed("x", jstate) ? Buttons.X : 0) |
                    (gpc.ButtonPressed("y", jstate) ? Buttons.Y : 0) |
                    0;

                var sticks = 
                    new GamePadThumbSticks(
                        new Vector2(gpc.AxisPressed("leftx", jstate), gpc.AxisPressed("lefty", jstate)),
                        new Vector2(gpc.AxisPressed("rightx", jstate), gpc.AxisPressed("righty", jstate)),
                        deadZoneMode
                    );
                
                var dpad = 
                    new GamePadDPad(
                        gpc.DpadPressed("dpup", jstate) ? ButtonState.Pressed : ButtonState.Released,
                        gpc.DpadPressed("dpdown", jstate) ? ButtonState.Pressed : ButtonState.Released,
                        gpc.DpadPressed("dpleft", jstate) ? ButtonState.Pressed : ButtonState.Released,
                        gpc.DpadPressed("dpright", jstate) ? ButtonState.Pressed : ButtonState.Released
                    );

                var triggers = 
                    new GamePadTriggers(
                        gpc.TriggerPressed("lefttrigger", jstate),
                        gpc.TriggerPressed("righttrigger", jstate)
                    );

                
                state = new GamePadState(sticks, triggers, new GamePadButtons(buttons), dpad);
            }

            return state;
        }
Example #32
0
        public static Microsoft.Xna.Framework.Input.GamePadState GetState(PlayerIndex playerIndex,
            Microsoft.Xna.Framework.Input.GamePadDeadZone deadZoneMode)
        {
            var controller = GetController(playerIndex);
            if (!controller.IsConnected)
                return new GamePadState(); // GamePadState.IsConnected = false by default

            var gamepad = controller.GetState().Gamepad;

            var thumbSticks = new GamePadThumbSticks(
                leftPosition: ConvertThumbStick(gamepad.LeftThumbX, gamepad.LeftThumbY,
                    SharpDX.XInput.Gamepad.LeftThumbDeadZone, deadZoneMode),
                rightPosition: ConvertThumbStick(gamepad.RightThumbX, gamepad.RightThumbY,
                    SharpDX.XInput.Gamepad.RightThumbDeadZone, deadZoneMode));

            var triggers = new GamePadTriggers(
                    leftTrigger: gamepad.LeftTrigger / (float)byte.MaxValue,
                    rightTrigger: gamepad.RightTrigger / (float)byte.MaxValue);

            var state = new GamePadState(
                thumbSticks: thumbSticks,
                triggers: triggers,
                buttons: ConvertToButtons(
                    buttonFlags: gamepad.Buttons,
                    leftThumbX: gamepad.LeftThumbX,
                    leftThumbY: gamepad.LeftThumbY,
                    rightThumbX: gamepad.RightThumbX,
                    rightThumbY: gamepad.RightThumbY,
                    leftTrigger: gamepad.LeftTrigger,
                    rightTrigger: gamepad.RightTrigger),
                dPad: ConvertToGamePadDPad(gamepad.Buttons));

            return state;
        }
Example #33
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;
   // ISSUE: explicit reference operation
   ^local = new GamePadState(thumbSticks, triggers, buttons, dPad);
   return gamePadState;
 }
Example #34
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);
 }
Example #35
0
 public GamePadTriggers(float leftTrigger, float rightTrigger)
 {
     this       = new GamePadTriggers();
     this.Left  = leftTrigger;
     this.Right = rightTrigger;
 }
Example #36
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;
        }
Example #37
0
        void IInputManager.Update(GameTime gameTime)
        {
            //foreach (CollidablePairHandler p in aheadBox.CollisionInformation.Pairs)
            //    {
            //        foreach (ContactInformation c in p.Contacts)
            //        {
            //            System.Diagnostics.Debug.WriteLine("{0} {1}", (c.Contact.Position - ship.ShipPosition).Length(), c.Contact.Normal);
            //        }
            //    }
                        
            Vector2 leftThumbStick = Vector2.Zero;
            Vector2 rightThumbStick = Vector2.Zero;

            Buttons pressedButtons = setButtons();

            turnVal = setTurn();
            leftThumbStick.X = turnVal;

            accelVal = setAcceleration();

            GamePadThumbSticks sticks = new GamePadThumbSticks(leftThumbStick, rightThumbStick);
            GamePadButtons buttons = new GamePadButtons(pressedButtons);
            GamePadTriggers triggers;
            if (accelVal >= 0f)
            {
                triggers = new GamePadTriggers(0f, accelVal);
            }
            else
            {
                triggers = new GamePadTriggers(-accelVal, 0f);
            }
            GamePadDPad dpad = new GamePadDPad();

            lastState = currentState;
            currentState = new GamePadState(sticks, triggers, buttons, dpad);
            
        }
Example #38
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;
        }
Example #39
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);
        }
Example #40
0
using System;
Example #41
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;
        }
Example #42
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;
        }
Example #43
0
 public GamePadTriggers(float leftTrigger, float rightTrigger)
 {
   this = new GamePadTriggers();
   this.Left = leftTrigger;
   this.Right = rightTrigger;
 }
Example #44
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);
        }
Example #45
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;
        }
Example #46
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;

                }
            }
        }
Example #47
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();
        }
Example #48
0
 public static GamePadState GetState(PlayerIndex playerIndex, GamePadDeadZone deadZoneMode)
 {
   Controller controller = GamePad.GetController(playerIndex);
   if (!controller.IsConnected)
     return new GamePadState();
   Gamepad gamepad = controller.GetState().Gamepad;
   GamePadThumbSticks gamePadThumbSticks1;
   // ISSUE: explicit reference operation
   // ISSUE: variable of a reference type
   GamePadThumbSticks& local1 = @gamePadThumbSticks1;
   Vector2 vector2_1 = GamePad.ConvertThumbStick(gamepad.LeftThumbX, gamepad.LeftThumbY, (short) 7849, deadZoneMode);
   Vector2 vector2_2 = GamePad.ConvertThumbStick(gamepad.RightThumbX, gamepad.RightThumbY, (short) 8689, deadZoneMode);
   Vector2 leftPosition = vector2_1;
   Vector2 rightPosition = vector2_2;
   // ISSUE: explicit reference operation
   ^local1 = new GamePadThumbSticks(leftPosition, rightPosition);
   GamePadTriggers gamePadTriggers1;
   // ISSUE: explicit reference operation
   // ISSUE: variable of a reference type
   GamePadTriggers& local2 = @gamePadTriggers1;
   float num1 = (float) gamepad.LeftTrigger / (float) byte.MaxValue;
   float num2 = (float) gamepad.RightTrigger / (float) byte.MaxValue;
   double num3 = (double) num1;
   double num4 = (double) num2;
   // ISSUE: explicit reference operation
   ^local2 = new GamePadTriggers((float) num3, (float) num4);
   GamePadState gamePadState;
   // ISSUE: explicit reference operation
   // ISSUE: variable of a reference type
   GamePadState& local3 = @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;
   // ISSUE: explicit reference operation
   ^local3 = new GamePadState(thumbSticks, triggers, buttons, dPad);
   return gamePadState;
 }