public void Update(Vector2 newPosition) { mLastDPadDown[(int)Xbox360GamePad.DPadDirection.Up] = AsDPadDown(Xbox360GamePad.DPadDirection.Up); mLastDPadDown[(int)Xbox360GamePad.DPadDirection.Down] = AsDPadDown(Xbox360GamePad.DPadDirection.Down); mLastDPadDown[(int)Xbox360GamePad.DPadDirection.Left] = AsDPadDown(Xbox360GamePad.DPadDirection.Left); mLastDPadDown[(int)Xbox360GamePad.DPadDirection.Right] = AsDPadDown(Xbox360GamePad.DPadDirection.Right); mVelocity = Vector2.Multiply((newPosition - mPosition), 1 / TimeManager.SecondDifference); mPosition = newPosition; UpdateAccordingToPosition(); for (int i = 0; i < 4; i++) { if (AsDPadPushed((Xbox360GamePad.DPadDirection)i)) { mLastDPadPush[i] = TimeManager.CurrentTime; } } leftAsButton.Update(-System.Math.Min(0, mPosition.X)); rightAsButton.Update(System.Math.Max(0, mPosition.X)); downAsButton.Update(-System.Math.Min(0, mPosition.Y)); upAsButton.Update(System.Math.Max(0, mPosition.Y)); }
private void UpdateAnalogStickAndTriggerValues() { if (mButtonMap == null) { mLeftStick.Update(mGamePadState.ThumbSticks.Left); mRightStick.Update(mGamePadState.ThumbSticks.Right); mLeftTrigger.Update(mGamePadState.Triggers.Left); mRightTrigger.Update(mGamePadState.Triggers.Right); } else { Vector2 newPosition = new Vector2(); #region Set the left analog stick position if (mButtonMap.LeftAnalogLeft != Keys.None && InputManager.Keyboard.KeyDown(mButtonMap.LeftAnalogLeft)) { newPosition.X = -1; } else if (mButtonMap.LeftAnalogRight != Keys.None && InputManager.Keyboard.KeyDown(mButtonMap.LeftAnalogRight)) { newPosition.X = 1; } if (mButtonMap.LeftAnalogUp != Keys.None && InputManager.Keyboard.KeyDown(mButtonMap.LeftAnalogUp)) { newPosition.Y = 1; } else if (mButtonMap.LeftAnalogDown != Keys.None && InputManager.Keyboard.KeyDown(mButtonMap.LeftAnalogDown)) { newPosition.Y = -1; } //cap for diagonal presses if (System.Math.Abs(newPosition.X) > 0.7071068f && System.Math.Abs(newPosition.Y) > 0.7071068f) { newPosition.X = System.Math.Sign(newPosition.X) * 0.7071068f; newPosition.Y = System.Math.Sign(newPosition.Y) * 0.7071068f; } mLeftStick.Update(newPosition); #endregion #region Set the right analog stick position newPosition = new Vector2(); if (mButtonMap.RightAnalogLeft != Keys.None && InputManager.Keyboard.KeyDown(mButtonMap.RightAnalogLeft)) { newPosition.X = -1; } else if (mButtonMap.RightAnalogRight != Keys.None && InputManager.Keyboard.KeyDown(mButtonMap.RightAnalogRight)) { newPosition.X = 1; } if (mButtonMap.RightAnalogUp != Keys.None && InputManager.Keyboard.KeyDown(mButtonMap.RightAnalogUp)) { newPosition.Y = 1; } else if (mButtonMap.RightAnalogDown != Keys.None && InputManager.Keyboard.KeyDown(mButtonMap.RightAnalogDown)) { newPosition.Y = -1; } //cap for diagonal presses if (System.Math.Abs(newPosition.X) > 0.7071068f && System.Math.Abs(newPosition.Y) > 0.7071068f) { newPosition.X = System.Math.Sign(newPosition.X) * 0.7071068f; newPosition.Y = System.Math.Sign(newPosition.Y) * 0.7071068f; } mRightStick.Update(newPosition); #endregion #region Set the trigger positions float newAnalogPosition = 0; if (mButtonMap.LeftTrigger != Keys.None && InputManager.Keyboard.KeyDown(mButtonMap.LeftTrigger)) { newAnalogPosition = 1; } else { newAnalogPosition = 0; } mLeftTrigger.Update(newAnalogPosition); if (mButtonMap.RightTrigger != Keys.None && InputManager.Keyboard.KeyDown(mButtonMap.RightTrigger)) { newAnalogPosition = 1; } else { newAnalogPosition = 0; } mRightTrigger.Update(newAnalogPosition); #endregion // Button remapping is used when the methods for push, release, and down are called. // Nothing to do here. } }