public static void Update(Camera2D cam) { lastKeyboardState = keyboardState; lastMouseState = mouseState; lastGamePadState = gamePadState; keyboardState = Keyboard.GetState(); mouseState = Mouse.GetState(); gamePadState = GamePad.GetState(getPlayerIndex()); // Check for swap between gamepad and KBM checkControlType(); camera = cam; // Attack if (IsUsingGamePad) { if (RightThumbstick.LengthSquared() > ThumbStickDeadZone * ThumbStickDeadZone) { Attack = true; } else { Attack = false; } } else { if (mouseState.LeftButton == ButtonState.Pressed) { Attack = true; } else { Attack = false; } } // Pause if (IsUsingGamePad) { if (gamePadState.IsButtonDown(Buttons.Start) && !lastGamePadState.IsButtonDown(Buttons.Start)) { Pause = !Pause; } } else { if (keyboardState.IsKeyDown(Keys.Escape) && !lastKeyboardState.IsKeyDown(Keys.Escape)) { Pause = !Pause; } } }
/// <summary> /// The fast poll method to readout the button states, trigger positions, thumb stick states and positions. /// </summary> private void FastPoll() { if (!controller.IsConnected) { return; } var gamepad = controller.GetState().Gamepad; A.Value = gamepad.Buttons.HasFlag(GamepadButtonFlags.A); B.Value = gamepad.Buttons.HasFlag(GamepadButtonFlags.B); X.Value = gamepad.Buttons.HasFlag(GamepadButtonFlags.X); Y.Value = gamepad.Buttons.HasFlag(GamepadButtonFlags.Y); LeftShoulder.Value = gamepad.Buttons.HasFlag(GamepadButtonFlags.LeftShoulder); RightShoulder.Value = gamepad.Buttons.HasFlag(GamepadButtonFlags.RightShoulder); Start.Value = gamepad.Buttons.HasFlag(GamepadButtonFlags.Start); Back.Value = gamepad.Buttons.HasFlag(GamepadButtonFlags.Back); Up.Value = gamepad.Buttons.HasFlag(GamepadButtonFlags.DPadUp); Down.Value = gamepad.Buttons.HasFlag(GamepadButtonFlags.DPadDown); Left.Value = gamepad.Buttons.HasFlag(GamepadButtonFlags.DPadLeft); Right.Value = gamepad.Buttons.HasFlag(GamepadButtonFlags.DPadRight); LeftThumbclick.Value = gamepad.Buttons.HasFlag(GamepadButtonFlags.LeftThumb); RightThumbclick.Value = gamepad.Buttons.HasFlag(GamepadButtonFlags.RightThumb); LeftTrigger.Value = gamepad.LeftTrigger.RemapF(byte.MinValue, byte.MaxValue, MinTrigger, MaxTrigger); RightTrigger.Value = gamepad.RightTrigger.RemapF(byte.MinValue, byte.MaxValue, MinTrigger, MaxTrigger); LeftThumbstick.SetValue(gamepad.LeftThumbX.RemapF(short.MinValue, short.MaxValue, MinThumb, MaxThumb), gamepad.LeftThumbY.RemapF(short.MinValue, short.MaxValue, MinThumb, MaxThumb)); RightThumbstick.SetValue(gamepad.RightThumbX.RemapF(short.MinValue, short.MaxValue, MinThumb, MaxThumb), gamepad.RightThumbY.RemapF(short.MinValue, short.MaxValue, MinThumb, MaxThumb)); }