Exemple #1
0
        private void Listen()
        {
            do
            {
                GetNewGamepadState();
                if (_actualState != _newState)
                {
                    foreach (GamepadButton btn in RetrieveButton(OpenTK.Input.ButtonState.Pressed))
                    {
                        if (!_gamepadButtonState[btn])
                        {
                            _context.OnButtonDown(new GamepadEventArgs {
                                Button = btn
                            });
                            _gamepadButtonState[btn] = true;
                        }
                    }
                    foreach (GamepadButton btn in RetrieveButton(OpenTK.Input.ButtonState.Released))
                    {
                        if (_gamepadButtonState[btn])
                        {
                            _context.OnButtonUp(new GamepadEventArgs {
                                Button = btn
                            });
                            _gamepadButtonState[btn] = false;
                        }
                    }
                }

                if (!GamepadStateWeighted.LeftStickStatesEquals(_actualState, _newState))
                {
                    _context.OnLeftStickMove(new GamepadEventArgs());
                }

                if (!GamepadStateWeighted.RightStickStatesEquals(_actualState, _newState))
                {
                    _context.OnRightStickMove(new GamepadEventArgs());
                }

                if (!GamepadStateWeighted.TriggerStatesEquals(_actualState, _newState))
                {
                    xConsole.WriteLine(_newState.Triggers.ToString(), MessageType.Error);
                }

                _actualState = _newState;

                Thread.Sleep(100); //TODO: scale this by the FPS setted in the Ple_GameWindow object
            } while (true);
        }
Exemple #2
0
        public GamepadDevice(int index_)
        {
            _gamepadId   = index_;
            _gamepadName = GamePad.GetName(index_);
            _gamepadCapa = GamePad.GetCapabilities(index_);
            _actualState = new GamepadStateWeighted(GamePad.GetState(_gamepadId));
            _newState    = _actualState;

            foreach (GamepadButton btn in Enum.GetValues(typeof(GamepadButton)))
            {
                _gamepadButtonState.Add(btn, false);
            }

            _thread = new Thread(Listen);
            return;
        }
Exemple #3
0
 private void GetNewGamepadState()
 {
     _newState = new GamepadStateWeighted(GamePad.GetState(_gamepadId));
     return;
 }
 public static bool RightTriggerStatesEquals(GamepadStateWeighted a, GamepadStateWeighted b)
 {
     return(a.GamepadState.Triggers.Right == b.GamepadState.Triggers.Right);
 }
 public static bool LeftTriggerStatesEquals(GamepadStateWeighted a, GamepadStateWeighted b)
 {
     return(a.GamepadState.Triggers.Left == b.GamepadState.Triggers.Left);;
 }
 public static bool StickStatesEquals(GamepadStateWeighted a, GamepadStateWeighted b)
 {
     return(LeftStickStatesEquals(a, b) && RightStickStatesEquals(a, b));
 }
        public static bool RightStickStatesEquals(GamepadStateWeighted a, GamepadStateWeighted b)
        {
            Vector2 aPosRight = a.GamepadState.ThumbSticks.Right.Yx;

            return(Math.Sqrt(Math.Pow(aPosRight.X, 2) + Math.Pow(aPosRight.Y, 2)) < a.StickDZ);
        }
 public GamepadStateWeighted(GamepadStateWeighted state_)
 {
     _gamepadState = state_._gamepadState;
 }
 public static bool TriggerStatesEquals(GamepadStateWeighted a, GamepadStateWeighted b)
 {
     return(LeftTriggerStatesEquals(a, b) && RightTriggerStatesEquals(a, b));
 }