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); }
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; }
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)); }