/// <summary> /// Notifies the subscriber to input /// </summary> /// <param name="playerIndex">The index of the player to alert</param> /// <param name="gamePadButtons">The button state</param> /// <param name="thumbSticks">The thumbstick properties for the controller</param> public void notifyGamePadInput(int playerIndex, Buttons gamePadButtons, GamePadThumbSticks thumbSticks) { if (playerIndex < playerDict.Count) { playerDict[playerIndex].gamePadInput(gamePadButtons, thumbSticks); } }
public void PublicConstructorClampsValues(Vector2 left, Vector2 right, Vector2 expectedLeft, Vector2 expectedRight) { var gamePadThumbSticks = new GamePadThumbSticks(left, right); Assert.That(gamePadThumbSticks.Left, Is.EqualTo(expectedLeft).Using(Vector2Comparer.Epsilon)); Assert.That(gamePadThumbSticks.Right, Is.EqualTo(expectedRight).Using(Vector2Comparer.Epsilon)); }
private static void SetFeather(InputFrame input, ref GamePadDPad pad, ref GamePadThumbSticks sticks) { pad = new GamePadDPad(ButtonState.Released, ButtonState.Released, ButtonState.Released, ButtonState.Released); Vector2 aim = AnalogHelper.GetFeather(input); sticks = new GamePadThumbSticks(aim, new Vector2(0, 0)); }
public GamepadState(GamePadThumbSticks thumbSticks, GamePadTriggers triggers, GamePadButtonsSet buttons) { Connected = true; ThumbSticks = thumbSticks; Triggers = triggers; Buttons = buttons; }
private static void SetFeather(InputRecord input, ref GamePadDPad pad, ref GamePadThumbSticks sticks) { pad = new GamePadDPad(ButtonState.Released, ButtonState.Released, ButtonState.Released, ButtonState.Released); Vector2 aim = ValidateFeatherInput(input); sticks = new GamePadThumbSticks(aim, new Vector2(0, 0)); }
public static void SetInputs(InputRecord input) { GamePadDPad pad; GamePadThumbSticks sticks; pad = new GamePadDPad( input.HasActions(Actions.Up) ? ButtonState.Pressed : ButtonState.Released, input.HasActions(Actions.Down) ? ButtonState.Pressed : ButtonState.Released, input.HasActions(Actions.Left) ? ButtonState.Pressed : ButtonState.Released, input.HasActions(Actions.Right) ? ButtonState.Pressed : ButtonState.Released ); sticks = new GamePadThumbSticks(new Vector2(0, 0), new Vector2(0, 0)); GamePadState state = new GamePadState( sticks, new GamePadTriggers(), new GamePadButtons( (input.HasActions(Actions.Jump) ? Buttons.A : 0) | (input.HasActions(Actions.Map) ? Buttons.Y : 0) | (input.HasActions(Actions.Feathers) ? Buttons.B : 0) | (input.HasActions(Actions.Attack) ? Buttons.X : 0) | (input.HasActions(Actions.ToggleRight) ? Buttons.RightShoulder : 0) | (input.HasActions(Actions.Menu) ? Buttons.Start : 0) | (input.HasActions(Actions.ToggleLeft) ? Buttons.LeftShoulder : 0) ), pad ); Input.TasGamepadState = state; }
//* ────________________________________* //* methods ───────────────────────────────-* //* -----------------------------------------------------------------------* /// <summary> /// 前回の状態と現在の状態より、ボタン入力があったかどうかを取得します。 /// </summary> /// /// <param name="now">現在のキー入力状態。</param> /// <param name="prev">前回のキー入力状態。</param> /// <returns>ボタン入力があった場合、<c>true</c>。</returns> protected override bool isInput(GamePadState now, GamePadState prev) { bool result = now.IsConnected && prev.IsConnected; if (result) { GamePadButtons btns = now.Buttons; GamePadDPad dpad = now.DPad; GamePadThumbSticks nStks = now.ThumbSticks; GamePadThumbSticks pStks = prev.ThumbSticks; // TODO : トリガ忘れてね? result = btns != prev.Buttons && ( btns.A == ButtonState.Pressed || btns.B == ButtonState.Pressed || btns.Back == ButtonState.Pressed || btns.BigButton == ButtonState.Pressed || btns.LeftShoulder == ButtonState.Pressed || btns.LeftStick == ButtonState.Pressed || btns.RightShoulder == ButtonState.Pressed || btns.RightStick == ButtonState.Pressed || btns.Start == ButtonState.Pressed || btns.X == ButtonState.Pressed || btns.Y == ButtonState.Pressed) || dpad != prev.DPad && ( dpad.Up == ButtonState.Pressed || dpad.Down == ButtonState.Pressed || dpad.Left == ButtonState.Pressed || dpad.Right == ButtonState.Pressed) || nStks != pStks && ( (nStks.Left.Length() >= threshold && pStks.Left.Length() < threshold) || (nStks.Right.Length() >= threshold && pStks.Right.Length() < threshold)); } return(result); }
public static GamePadState CalculateInputs() { kbState = Keyboard.GetState(); GamePadDPad pad = new GamePadDPad( ButtonState.Released, ButtonState.Released, IsKeyDown(Keys.OemQuotes) ? ButtonState.Pressed : ButtonState.Released, IsKeyDown(Keys.OemBackslash) ? ButtonState.Pressed : ButtonState.Released); GamePadThumbSticks sticks = new GamePadThumbSticks(new Vector2(0, 0), new Vector2(0, 0)); GamePadState padState = new GamePadState( sticks, new GamePadTriggers(0, 0), new GamePadButtons( IsTile(GetTileInFrontOfPlayer()) ? Buttons.A : (Buttons)0 | (Buttons)0 | (Buttons)0 | (Buttons)0 | (Buttons)0 | (Buttons)0 | (Buttons)0 ), pad ); return(padState); }
public GamePadValues(GamePadThumbSticks thumbSticks, GamePadTriggers triggers) : this( thumbSticks.Left.X, thumbSticks.Left.Y, thumbSticks.Right.X, thumbSticks.Right.Y, triggers.Left, triggers.Right) { }
public ThumbStickStateEventArgs(GamePadNumber controllerNum, GamePadThumbSticks thumbStick, float xValue, float yValue) : base(controllerNum) { this.ThumbStick = thumbStick; this.XValue = xValue; this.YValue = yValue; }
public static void Update() { for (int player = 0; player < States.Length; player++) { GamePadState stateX = GamePad.GetState((PlayerIndex)player); DInputState stateD = States[player]; stateD.connected = stateX.IsConnected; if (!stateD.connected) { continue; } // TODO: Finalize DInput mappings GamePadThumbSticks sticks = stateX.ThumbSticks; stateD.leftX = sticks.Left.X; stateD.leftY = sticks.Left.Y; stateD.leftZ = 0f; // ??? stateD.rightX = sticks.Right.X; stateD.rightY = sticks.Right.Y; stateD.rightZ = 0f; // ??? GamePadTriggers triggers = stateX.Triggers; stateD.slider1 = stateX.Triggers.Left; stateD.slider2 = stateX.Triggers.Right; GamePadDPad dpad = stateX.DPad; stateD.left = dpad.Left == ButtonState.Pressed; stateD.right = dpad.Right == ButtonState.Pressed; stateD.up = dpad.Up == ButtonState.Pressed; stateD.down = dpad.Down == ButtonState.Pressed; GamePadButtons buttonsX = stateX.Buttons; List <bool> buttonsD = stateD.buttons ?? new List <bool>(); for (int i = buttonsD.Count; i < 13; i++) { buttonsD.Add(false); } while (buttonsD.Count > 13) { buttonsD.RemoveAt(0); } buttonsD[0] = buttonsX.X == ButtonState.Pressed; buttonsD[1] = buttonsX.A == ButtonState.Pressed; buttonsD[2] = buttonsX.B == ButtonState.Pressed; buttonsD[3] = buttonsX.Y == ButtonState.Pressed; buttonsD[4] = buttonsX.LeftShoulder == ButtonState.Pressed; buttonsD[5] = buttonsX.RightShoulder == ButtonState.Pressed; buttonsD[6] = triggers.Left >= 0.999f; buttonsD[7] = triggers.Right >= 0.999f; buttonsD[8] = buttonsX.Back == ButtonState.Pressed; buttonsD[9] = buttonsX.Start == ButtonState.Pressed; buttonsD[10] = buttonsX.BigButton == ButtonState.Pressed; // ??? buttonsD[11] = buttonsX.LeftStick == ButtonState.Pressed; buttonsD[12] = buttonsX.RightStick == ButtonState.Pressed; stateD.buttons = buttonsD; } }
public void Update(GameTime gameTime) { previousState = currentState; currentState = GamePad.GetState(Player, GamePadDeadZone.IndependentAxes); previousThumbsticks = currentThumbsticks; currentThumbsticks = GamePad.GetState(Player, GamePadDeadZone.None).ThumbSticks; }
private void InputUpdate() { this.prevState = this.state; this.state = GamePad.GetState(this.playerIndex); if (this._pos < this._maxLength) { if (this.state.IsConnected) { InputThread.InputStruct inputStruct = this.inputsIn[this._pos]; InputFilter inputFilter = this.leftXFilter; GamePadThumbSticks thumbSticks = this.state.ThumbSticks; GamePadThumbSticks.StickValue left = thumbSticks.Left; inputStruct.leftX = inputFilter.Filter((double)left.X); InputThread.InputStruct inputStruct1 = this.inputsIn[this._pos]; InputFilter inputFilter1 = this.leftYFilter; thumbSticks = this.state.ThumbSticks; left = thumbSticks.Left; inputStruct1.leftY = inputFilter1.Filter((double)left.Y); InputThread.InputStruct inputStruct2 = this.inputsIn[this._pos]; InputFilter inputFilter2 = this.rightXFilter; thumbSticks = this.state.ThumbSticks; left = thumbSticks.Right; inputStruct2.rightX = inputFilter2.Filter((double)left.X); InputThread.InputStruct inputStruct3 = this.inputsIn[this._pos]; InputFilter inputFilter3 = this.rightYFilter; thumbSticks = this.state.ThumbSticks; left = thumbSticks.Right; inputStruct3.rightY = inputFilter3.Filter((double)left.Y); this.inputsIn[this._pos].time = DateTime.UtcNow.Ticks; this.inputsIn[this._pos].leftXVel = this.GetVel(this.inputsIn[this._pos].leftX, this._lastFrameData.leftX, this.inputsIn[this._pos].time, this._lastFrameData.time); this.inputsIn[this._pos].leftYVel = this.GetVel(this.inputsIn[this._pos].leftY, this._lastFrameData.leftY, this.inputsIn[this._pos].time, this._lastFrameData.time); this.inputsIn[this._pos].rightXVel = this.GetVel(this.inputsIn[this._pos].rightX, this._lastFrameData.rightX, this.inputsIn[this._pos].time, this._lastFrameData.time); this.inputsIn[this._pos].rightYVel = this.GetVel(this.inputsIn[this._pos].rightY, this._lastFrameData.rightY, this.inputsIn[this._pos].time, this._lastFrameData.time); this._lastFrameData.leftX = this.inputsIn[this._pos].leftX; this._lastFrameData.leftY = this.inputsIn[this._pos].leftY; this._lastFrameData.rightX = this.inputsIn[this._pos].rightX; this._lastFrameData.rightY = this.inputsIn[this._pos].rightY; this._lastFrameData.time = this.inputsIn[this._pos].time; this._pos++; return; } this.inputsIn[this._pos].leftX = this.leftXFilter.Filter((double)((Mathf.Abs(this.inputController.player.GetAxis("LeftStickX")) < 0.1f ? 0f : this.inputController.player.GetAxis("LeftStickX")))); this.inputsIn[this._pos].leftY = this.leftYFilter.Filter((double)this.inputController.player.GetAxis("LeftStickY")); this.inputsIn[this._pos].rightX = this.rightXFilter.Filter((double)((Mathf.Abs(this.inputController.player.GetAxis("RightStickX")) < 0.1f ? 0f : this.inputController.player.GetAxis("RightStickX")))); this.inputsIn[this._pos].rightY = this.rightYFilter.Filter((double)this.inputController.player.GetAxis("RightStickY")); this.inputsIn[this._pos].time = DateTime.UtcNow.Ticks; this.inputsIn[this._pos].leftXVel = this.GetVel(this.inputsIn[this._pos].leftX, this._lastFrameData.leftX, this.inputsIn[this._pos].time, this._lastFrameData.time); this.inputsIn[this._pos].leftYVel = this.GetVel(this.inputsIn[this._pos].leftY, this._lastFrameData.leftY, this.inputsIn[this._pos].time, this._lastFrameData.time); this.inputsIn[this._pos].rightXVel = this.GetVel(this.inputsIn[this._pos].rightX, this._lastFrameData.rightX, this.inputsIn[this._pos].time, this._lastFrameData.time); this.inputsIn[this._pos].rightYVel = this.GetVel(this.inputsIn[this._pos].rightY, this._lastFrameData.rightY, this.inputsIn[this._pos].time, this._lastFrameData.time); this._lastFrameData.leftX = this.inputsIn[this._pos].leftX; this._lastFrameData.leftY = this.inputsIn[this._pos].leftY; this._lastFrameData.rightX = this.inputsIn[this._pos].rightX; this._lastFrameData.rightY = this.inputsIn[this._pos].rightY; this._lastFrameData.time = this.inputsIn[this._pos].time; this._pos++; } }
internal GamePadState(bool isConnected, RawState rawState, GamePadDeadZone deadZone) { this.isConnected = isConnected; if (!isConnected) { rawState.dwPacketNumber = 0; rawState.Gamepad.dwButtons = 0; rawState.Gamepad.bLeftTrigger = 0; rawState.Gamepad.bRightTrigger = 0; rawState.Gamepad.sThumbLX = 0; rawState.Gamepad.sThumbLY = 0; rawState.Gamepad.sThumbRX = 0; rawState.Gamepad.sThumbRY = 0; } packetNumber = rawState.dwPacketNumber; buttons = new GamePadButtons( (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.Start) != 0 ? ButtonState.Pressed : ButtonState.Released, (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.Back) != 0 ? ButtonState.Pressed : ButtonState.Released, (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.LeftThumb) != 0 ? ButtonState.Pressed : ButtonState.Released, (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.RightThumb) != 0 ? ButtonState.Pressed : ButtonState.Released, (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.LeftShoulder) != 0 ? ButtonState.Pressed : ButtonState.Released, (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.RightShoulder) != 0 ? ButtonState.Pressed : ButtonState.Released, (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.Guide) != 0 ? ButtonState.Pressed : ButtonState.Released, (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.A) != 0 ? ButtonState.Pressed : ButtonState.Released, (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.B) != 0 ? ButtonState.Pressed : ButtonState.Released, (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.X) != 0 ? ButtonState.Pressed : ButtonState.Released, (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.Y) != 0 ? ButtonState.Pressed : ButtonState.Released ); dPad = new GamePadDPad( (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.DPadUp) != 0 ? ButtonState.Pressed : ButtonState.Released, (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.DPadDown) != 0 ? ButtonState.Pressed : ButtonState.Released, (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.DPadLeft) != 0 ? ButtonState.Pressed : ButtonState.Released, (rawState.Gamepad.dwButtons & (uint)ButtonsConstants.DPadRight) != 0 ? ButtonState.Pressed : ButtonState.Released ); switch (deadZone) { case GamePadDeadZone.IndependentAxes: rawState.Gamepad.sThumbLX = ThumbStickDeadZoneIndependantAxes(rawState.Gamepad.sThumbLX, (short)Imports.Constants.LeftStickDeadZone); rawState.Gamepad.sThumbLY = ThumbStickDeadZoneIndependantAxes(rawState.Gamepad.sThumbLY, (short)Imports.Constants.LeftStickDeadZone); rawState.Gamepad.sThumbRX = ThumbStickDeadZoneIndependantAxes(rawState.Gamepad.sThumbRX, (short)Imports.Constants.RightStickDeadZone); rawState.Gamepad.sThumbRY = ThumbStickDeadZoneIndependantAxes(rawState.Gamepad.sThumbRY, (short)Imports.Constants.RightStickDeadZone); break; } thumbSticks = new GamePadThumbSticks( new GamePadThumbSticks.StickValue( rawState.Gamepad.sThumbLX < 0 ? rawState.Gamepad.sThumbLX / 32768.0f : rawState.Gamepad.sThumbLX / 32767.0f, rawState.Gamepad.sThumbLY < 0 ? rawState.Gamepad.sThumbLY / 32768.0f : rawState.Gamepad.sThumbLY / 32767.0f), new GamePadThumbSticks.StickValue( rawState.Gamepad.sThumbRX < 0 ? rawState.Gamepad.sThumbRX / 32768.0f : rawState.Gamepad.sThumbRX / 32767.0f, rawState.Gamepad.sThumbRY < 0 ? rawState.Gamepad.sThumbRY / 32768.0f : rawState.Gamepad.sThumbRY / 32767.0f) ); triggers = new GamePadTriggers(rawState.Gamepad.bLeftTrigger / 255.0f, rawState.Gamepad.bRightTrigger / 255.0f); }
private static void SetDPad(InputFrame input, ref GamePadDPad pad, ref GamePadThumbSticks sticks) { pad = new GamePadDPad( input.HasActions(Actions.Up) ? ButtonState.Pressed : ButtonState.Released, input.HasActions(Actions.Down) ? ButtonState.Pressed : ButtonState.Released, input.HasActions(Actions.Left) ? ButtonState.Pressed : ButtonState.Released, input.HasActions(Actions.Right) ? ButtonState.Pressed : ButtonState.Released ); sticks = new GamePadThumbSticks(new Vector2(0, 0), new Vector2(0, 0)); }
/// <summary> /// Initializes a new instance of the <see cref="T:Microsoft.Xna.Framework.Input.GamePadState"/> struct /// 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; PlatformConstruct(); }
public static void SetInputs(InputRecord input) { GamePadDPad pad; GamePadThumbSticks sticks; if (input.HasActions(Actions.Feather)) { pad = new GamePadDPad(ButtonState.Released, ButtonState.Released, ButtonState.Released, ButtonState.Released); sticks = new GamePadThumbSticks(new Vector2(input.GetX(), input.GetY()), new Vector2(0, 0)); } else { pad = new GamePadDPad( input.HasActions(Actions.Up) ? ButtonState.Pressed : ButtonState.Released, input.HasActions(Actions.Down) ? ButtonState.Pressed : ButtonState.Released, input.HasActions(Actions.Left) ? ButtonState.Pressed : ButtonState.Released, input.HasActions(Actions.Right) ? ButtonState.Pressed : ButtonState.Released ); sticks = new GamePadThumbSticks(new Vector2(0, 0), new Vector2(0, 0)); } GamePadState state = new GamePadState( sticks, new GamePadTriggers(input.HasActions(Actions.Journal) ? 1f : 0f, 0), new GamePadButtons( (input.HasActions(Actions.Jump) ? Buttons.A : (Buttons)0) | (input.HasActions(Actions.Jump2) ? Buttons.Y : (Buttons)0) | (input.HasActions(Actions.Dash) ? Buttons.B : (Buttons)0) | (input.HasActions(Actions.Dash2) ? Buttons.X : (Buttons)0) | (input.HasActions(Actions.Grab) ? Buttons.RightShoulder : (Buttons)0) | (input.HasActions(Actions.Start) ? Buttons.Start : (Buttons)0) | (input.HasActions(Actions.Restart) ? Buttons.LeftShoulder : (Buttons)0) ), pad ); bool found = false; for (int i = 0; i < 4; i++) { MInput.GamePads[i].Update(); if (MInput.GamePads[i].Attached) { found = true; MInput.GamePads[i].CurrentState = state; } } if (!found) { MInput.GamePads[0].CurrentState = state; MInput.GamePads[0].Attached = true; } MInput.UpdateVirtualInputs(); }
// コンストラクタ public GameManager(ContentManager content, GraphicsDevice graphics) // GameManagerを呼べばいつでもここに書いてある機能を使えるようにする。 { InputState = new InputState(); Sticks = new GamePadThumbSticks(); PadState = new GamePadState(); Renderer = new Renderer(content, graphics); Sound = new Sound(content); GameTime = new GameTime(); Random = new Random(); Camera = new Camera(Player.GetPos); }
void Positions() { // Just some shortcuts. GamePadThumbSticks currentTS = currentState.ThumbSticks; GamePadTriggers currentT = currentState.Triggers; leftStickPos.x = currentTS.Left.X; leftStickPos.y = currentTS.Left.Y; rightStickPos.x = currentTS.Right.X; rightStickPos.y = currentTS.Right.Y; leftShoulderPos = currentT.Left; rightShoulderPos = currentT.Right; }
/// <summary> /// This is called when the game should draw itself. /// </summary> /// <param name="gameTime">Provides a snapshot of timing values.</param> protected override void Draw(GameTime gameTime) { frameCount++; // starting to draw a new frame GraphicsDevice.Clear(Color.CornflowerBlue); // TODO: Add your drawing code here spriteBatch.Begin(); // display a title spriteBatch.DrawString(mainFont, "Input Demo", new Vector2(10, 10), Color.Black); // check which keys are pressed for (int i = 0; i < 4; i++) { // if key is pressed display a message if (wasd[i] == true) { spriteBatch.DrawString(mainFont, wasdStr[i] + " key is pressed", new Vector2(10, (25 * i) + 40), Color.Blue); } } // check for left mouse button press if (mState.LeftButton == ButtonState.Pressed) { spriteBatch.DrawString(mouseFont, "left button on mouse is pressed", new Vector2(mState.X, mState.Y), Color.Red); } // see some game pad values if (gState.IsConnected == false) { spriteBatch.DrawString(mainFont, "No connected gamepad", new Vector2(10, 200), Color.Black); } else { GamePadThumbSticks sticks = gState.ThumbSticks; Vector2 left = sticks.Left; Vector2 right = sticks.Right; string leftStr = "Left thumbstick - X: " + left.X + " Y: " + left.Y; string rightStr = "Right thumbstick - X: " + right.X + " Y: " + right.Y; spriteBatch.DrawString(mainFont, leftStr, new Vector2(10, 200), Color.Black); spriteBatch.DrawString(mainFont, rightStr, new Vector2(10, 230), Color.Black); } // display framerate spriteBatch.DrawString(mainFont, "FPS: " + frameRate, new Vector2(400, 10), Color.Magenta); spriteBatch.End(); base.Draw(gameTime); }
/// <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 ) : this() { ThumbSticks = thumbSticks; Triggers = triggers; Buttons = buttons; IsConnected = true; PacketNumber = 0; }
private void updateGamePads() { for (uint playerIndex = 0; playerIndex < input.getPlayersCount(); ++playerIndex) { AsGamePad gamePad = AsGamePad.player(playerIndex); GamePadTriggers triggers = input.Triggers(playerIndex); GamePadThumbSticks sticks = input.ThumbSticks(playerIndex); gamePad.update(triggers.Left, triggers.Right); gamePad.getLeftStick().update(sticks.Left.X, sticks.Left.Y); gamePad.getRightStick().update(sticks.Right.X, sticks.Right.Y); } }
public GamepadStateWeighted(GamePadState state_, float stickDZ_ = 0.1f) { StickDZ = stickDZ_; _gamepadState = state_; Triggers = state_.Triggers; ThumbSticks = state_.ThumbSticks; Buttons = state_.Buttons; DPad = state_.DPad; IsConnected = state_.IsConnected; PacketNumber = state_.PacketNumber; }
/// <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; }
public static GamePadState GetState(int index, GamePadDeadZone deadZoneMode) { var gamePad = GamePads[index]; GamePadState state = GamePadState.Default; if (gamePad != null && gamePad._isConnected) { // Check if the device was disconnected var dvc = InputDevice.GetDevice(gamePad._deviceId); if (dvc == null) { Android.Util.Log.Debug("MonoGame", "Detected controller disconnect [" + index + "] "); gamePad._isConnected = false; return(state); } GamePadThumbSticks thumbSticks = new GamePadThumbSticks(gamePad._leftStick, gamePad._rightStick); var dpad = new GamePadDPad( HasFlagToState(gamePad._buttons, Buttons.DPadUp), HasFlagToState(gamePad._buttons, Buttons.DPadDown), HasFlagToState(gamePad._buttons, Buttons.DPadLeft), HasFlagToState(gamePad._buttons, Buttons.DPadRight)); state = new GamePadState( thumbSticks, new GamePadTriggers(gamePad._leftTrigger, gamePad._rightTrigger), new GamePadButtons(gamePad._buttons), dpad); } // we need to add the default "no gamepad connected but the user hit back" // behaviour here else { if (index == 0 && Back) { // Consume state Back = false; state = new GamePadState(new GamePadThumbSticks(), new GamePadTriggers(), new GamePadButtons(Buttons.Back), new GamePadDPad()); } else { state = new GamePadState(); } } return(state); }
public static void SetInputs(InputFrame input) { GamePadDPad pad = default; GamePadThumbSticks sticks = default; GamePadState state = default; if (input.HasActions(Actions.Feather)) { SetFeather(input, ref pad, ref sticks); } else { SetDPad(input, ref pad, ref sticks); } SetState(input, ref state, ref pad, ref sticks); bool found = false; for (int i = 0; i < 4; i++) { MInput.GamePads[i].Update(); if (MInput.GamePads[i].Attached) { found = true; MInput.GamePads[i].CurrentState = state; } } if (!found) { MInput.GamePads[0].CurrentState = state; MInput.GamePads[0].Attached = true; } if (input.HasActions(Actions.Confirm)) { MInput.Keyboard.CurrentState = new KeyboardState(Keys.Enter); } else { MInput.Keyboard.CurrentState = new KeyboardState(); } UpdateVirtualInputs(); }
/// <summary> /// Gets the button mask along with 'virtual buttons' like LeftThumbstickLeft. /// </summary> private Buttons GetVirtualButtons() { Buttons result = Buttons.buttons; GamePadThumbSticks sticks = ThumbSticks; sticks.ApplyDeadZone(GamePadDeadZone.IndependentAxes, 7849 / 32767f); if (sticks.Left.X < 0) { result |= Microsoft.Xna.Framework.Input.Buttons.LeftThumbstickLeft; } else if (sticks.Left.X > 0) { result |= Microsoft.Xna.Framework.Input.Buttons.LeftThumbstickRight; } if (sticks.Left.Y < 0) { result |= Microsoft.Xna.Framework.Input.Buttons.LeftThumbstickDown; } else if (sticks.Left.Y > 0) { result |= Microsoft.Xna.Framework.Input.Buttons.LeftThumbstickUp; } if (sticks.Right.X < 0) { result |= Microsoft.Xna.Framework.Input.Buttons.RightThumbstickLeft; } else if (sticks.Right.X > 0) { result |= Microsoft.Xna.Framework.Input.Buttons.RightThumbstickRight; } if (sticks.Right.Y < 0) { result |= Microsoft.Xna.Framework.Input.Buttons.RightThumbstickDown; } else if (sticks.Right.Y > 0) { result |= Microsoft.Xna.Framework.Input.Buttons.RightThumbstickUp; } return(result); }
private Vector2 ApplyDeadZone(GamePadThumbSticks ThumbStick) { // Scaled Radial Dead Zone Vector2 stickDirection = new Vector2(ThumbStick.Right.X, -ThumbStick.Right.Y); if (stickDirection.Length() < Deadzone) { stickDirection = Vector2.Zero; } else { stickDirection.Normalize(); stickDirection *= ((stickDirection.Length() - Deadzone) / (1 - Deadzone)); } return(stickDirection); }
private static float XInputGetAxisState(GamePadThumbSticks xiThumbSticks, XboxAxis xciAxis) { float stateToReturn = 0.0f; switch (xciAxis) { case XboxAxis.LeftStickX: stateToReturn = xiThumbSticks.Left.X; break; case XboxAxis.LeftStickY: stateToReturn = xiThumbSticks.Left.Y; break; case XboxAxis.RightStickX: stateToReturn = xiThumbSticks.Right.X; break; case XboxAxis.RightStickY: stateToReturn = xiThumbSticks.Right.Y; break; default: stateToReturn = 0.0f; break; } return(stateToReturn); }
private void SetInputs() { GamePadDPad pad; GamePadThumbSticks sticks; if (Current.HasActions(Actions.Feather)) { pad = new GamePadDPad(ButtonState.Released, ButtonState.Released, ButtonState.Released, ButtonState.Released); sticks = new GamePadThumbSticks(new Vector2(Current.GetX(), Current.GetY()), new Vector2(0, 0)); } else { pad = new GamePadDPad( Current.HasActions(Actions.Up) ? ButtonState.Pressed : ButtonState.Released, Current.HasActions(Actions.Down) ? ButtonState.Pressed : ButtonState.Released, Current.HasActions(Actions.Left) ? ButtonState.Pressed : ButtonState.Released, Current.HasActions(Actions.Right) ? ButtonState.Pressed : ButtonState.Released ); sticks = new GamePadThumbSticks(new Vector2(0, 0), new Vector2(0, 0)); } GamePadState state = new GamePadState( sticks, new GamePadTriggers(Current.HasActions(Actions.Journal) ? 1f : 0f, 0), new GamePadButtons( (Current.HasActions(Actions.Jump) ? Buttons.A : (Buttons)0) | (Current.HasActions(Actions.Dash) ? Buttons.B : (Buttons)0) | (Current.HasActions(Actions.Grab) ? Buttons.RightShoulder : (Buttons)0) | (Current.HasActions(Actions.Start) ? Buttons.Start : (Buttons)0) | (Current.HasActions(Actions.Restart) ? Buttons.LeftShoulder : (Buttons)0) ), pad ); for (int i = 0; i < 4; i++) { MInput.GamePads[i].Update(); if (MInput.GamePads[i].Attached) { MInput.GamePads[i].CurrentState = state; } } MInput.UpdateVirtualInputs(); }
/// <summary> /// Gets the button mask along with 'virtual buttons' like LeftThumbstickLeft. /// </summary> private Buttons GetVirtualButtons() { Buttons result = Buttons.buttons; GamePadThumbSticks sticks = ThumbSticks; if (sticks.Left.X < 0) { result |= Microsoft.Xna.Framework.Input.Buttons.LeftThumbstickLeft; } else if (sticks.Left.X > 0) { result |= Microsoft.Xna.Framework.Input.Buttons.LeftThumbstickRight; } if (sticks.Left.Y < 0) { result |= Microsoft.Xna.Framework.Input.Buttons.LeftThumbstickDown; } else if (sticks.Left.Y > 0) { result |= Microsoft.Xna.Framework.Input.Buttons.LeftThumbstickUp; } if (sticks.Right.X < 0) { result |= Microsoft.Xna.Framework.Input.Buttons.RightThumbstickLeft; } else if (sticks.Right.X > 0) { result |= Microsoft.Xna.Framework.Input.Buttons.RightThumbstickRight; } if (sticks.Right.Y < 0) { result |= Microsoft.Xna.Framework.Input.Buttons.RightThumbstickDown; } else if (sticks.Right.Y > 0) { result |= Microsoft.Xna.Framework.Input.Buttons.RightThumbstickUp; } return(result); }
public void gamePadInput(Buttons gamePadButtons, GamePadThumbSticks thumbSticks) { //acceleration was 2 for this var leftThumbX = thumbSticks.Left.X * acceleration; var leftThumbY = thumbSticks.Left.Y * -1 * acceleration; Vector2 vel = new Vector2(leftThumbX, leftThumbY); if (sprintActive) { vel = vel * 3; } if (gamePadButtons == inputButtons.rotateCW) { //Rotate(thumbSticks.Right); } else if (gamePadButtons == inputButtons.rotateACW) { //Rotate(thumbSticks.Right); } else if (gamePadButtons == inputButtons.sprint) { sprintActive = true; } else if (gamePadButtons == inputButtons.use) { if (!abilityTimeout) { OnEntityRequested(new Vector2(Position.X + 80, Position.Y), "Walls/wall-left", typeof(Wall)); abilityTimeout = true; } } else { sprintActive = false; } Position += vel; }