public override int GetHashCode() { unchecked { var hashCode = A.GetHashCode(); hashCode = (hashCode * 397) ^ B.GetHashCode(); hashCode = (hashCode * 397) ^ X.GetHashCode(); hashCode = (hashCode * 397) ^ Y.GetHashCode(); hashCode = (hashCode * 397) ^ LeftGrip.GetHashCode(); hashCode = (hashCode * 397) ^ RightGrip.GetHashCode(); hashCode = (hashCode * 397) ^ Select.GetHashCode(); hashCode = (hashCode * 397) ^ Start.GetHashCode(); hashCode = (hashCode * 397) ^ Steam.GetHashCode(); hashCode = (hashCode * 397) ^ LeftBumper.GetHashCode(); hashCode = (hashCode * 397) ^ RightBumper.GetHashCode(); hashCode = (hashCode * 397) ^ LeftStickX.GetHashCode(); hashCode = (hashCode * 397) ^ LeftStickY.GetHashCode(); hashCode = (hashCode * 397) ^ LeftStickClick.GetHashCode(); hashCode = (hashCode * 397) ^ RightPadX.GetHashCode(); hashCode = (hashCode * 397) ^ RightPadY.GetHashCode(); hashCode = (hashCode * 397) ^ RightPadClick.GetHashCode(); hashCode = (hashCode * 397) ^ LeftPadClick.GetHashCode(); hashCode = (hashCode * 397) ^ LeftTrigger.GetHashCode(); hashCode = (hashCode * 397) ^ RightTrigger.GetHashCode(); hashCode = (hashCode * 397) ^ LeftPadTouched.GetHashCode(); return(hashCode); } }
public void Update() { LeftControlStick.Update(); RightControlStick.Update(); ButtonA.Update(); ButtonB.Update(); ButtonX.Update(); ButtonY.Update(); ButtonLB.Update(); ButtonRB.Update(); ButtonL3.Update(); ButtonR3.Update(); ButtonBack.Update(); ButtonStart.Update(); LeftTrigger.Update(); RightTrigger.Update(); DPad.Update(); }
private void Update() { var state = new State(); if (!Controller.GetState(out state)) { return; } LeftThumb.Update(state.Gamepad.LeftThumbX, state.Gamepad.LeftThumbY); RightThumb.Update(state.Gamepad.RightThumbX, state.Gamepad.RightThumbY); LeftTrigger.Update(state.Gamepad.LeftTrigger); RightTrigger.Update(state.Gamepad.RightTrigger); foreach (var button in Buttons) { button.Update(state.Gamepad.Buttons); } }
public void HandleInputs() { GameObject.Find("Prompt").GetComponent <Text>().text = ""; //perform action linked to x button if (ControllerPluginWrapper.GetButtonDown(0, 0)) { if ((XButton.getCommand() != "DoNothing") && (XButton.getCommand() != "Jump") && (XButton.getCommand() != "UndoButton") && (XButton.getCommand() != "RemapButton")) { inputs.Push(XButton); } cooldown = maxCD; XButton.Execute(player, inputs.Peek()); if (XButton.getCommand() == "UndoButton") { inputs.Pop(); } else if (XButton.getCommand() == "RemapButton") { remapping = true; ResetAllButtons(); } } //perform action linked to circle button else if (ControllerPluginWrapper.GetButtonDown(0, 1)) { if ((CircleButton.getCommand() != "DoNothing") && (CircleButton.getCommand() != "Jump") && (CircleButton.getCommand() != "UndoButton") && (CircleButton.getCommand() != "RemapButton")) { inputs.Push(CircleButton); } cooldown = maxCD; CircleButton.Execute(player, inputs.Peek()); if (CircleButton.getCommand() == "UndoButton") { inputs.Pop(); } else if (CircleButton.getCommand() == "RemapButton") { remapping = true; ResetAllButtons(); } } //perform action linked to square button else if (ControllerPluginWrapper.GetButtonDown(0, 2)) { if ((SquareButton.getCommand() != "DoNothing") && (SquareButton.getCommand() != "Jump") && (SquareButton.getCommand() != "UndoButton") && (SquareButton.getCommand() != "RemapButton")) { inputs.Push(SquareButton); } cooldown = maxCD; SquareButton.Execute(player, inputs.Peek()); if (SquareButton.getCommand() == "UndoButton") { inputs.Pop(); } else if (SquareButton.getCommand() == "RemapButton") { remapping = true; ResetAllButtons(); } } //perform action linked to triangle button else if (ControllerPluginWrapper.GetButtonDown(0, 3)) { if ((TriangleButton.getCommand() != "DoNothing") && (TriangleButton.getCommand() != "Jump") && (TriangleButton.getCommand() != "UndoButton") && (TriangleButton.getCommand() != "RemapButton")) { inputs.Push(TriangleButton); } cooldown = maxCD; TriangleButton.Execute(player, inputs.Peek()); if (TriangleButton.getCommand() == "UndoButton") { inputs.Pop(); } else if (TriangleButton.getCommand() == "RemapButton") { remapping = true; ResetAllButtons(); } } //perform action linked to up on directional pad else if (ControllerPluginWrapper.GetButtonDown(0, 4)) { if ((DPadUp.getCommand() != "DoNothing") && (DPadUp.getCommand() != "Jump") && (DPadUp.getCommand() != "UndoButton") && (DPadUp.getCommand() != "RemapButton")) { inputs.Push(DPadUp); } cooldown = maxCD; DPadUp.Execute(player, inputs.Peek()); if (DPadUp.getCommand() == "UndoButton") { inputs.Pop(); } else if (DPadUp.getCommand() == "RemapButton") { remapping = true; ResetAllButtons(); } } //perform action linked to down on directional pad else if (ControllerPluginWrapper.GetButtonDown(0, 5)) { if ((DPadDown.getCommand() != "DoNothing") && (DPadDown.getCommand() != "Jump") && (DPadDown.getCommand() != "UndoButton") && (DPadDown.getCommand() != "RemapButton")) { inputs.Push(DPadDown); } cooldown = maxCD; DPadDown.Execute(player, inputs.Peek()); if (DPadDown.getCommand() == "UndoButton") { inputs.Pop(); } else if (DPadDown.getCommand() == "RemapButton") { remapping = true; ResetAllButtons(); } } //perform action linked to left on directional pad else if (ControllerPluginWrapper.GetButtonDown(0, 6)) { if ((DPadLeft.getCommand() != "DoNothing") && (DPadLeft.getCommand() != "Jump") && (DPadLeft.getCommand() != "UndoButton") && (DPadLeft.getCommand() != "RemapButton")) { inputs.Push(DPadLeft); } cooldown = maxCD; DPadLeft.Execute(player, inputs.Peek()); if (DPadLeft.getCommand() == "UndoButton") { inputs.Pop(); } else if (DPadLeft.getCommand() == "RemapButton") { remapping = true; ResetAllButtons(); } } //perform action linked to right on directional pad else if (ControllerPluginWrapper.GetButtonDown(0, 7)) { if ((DPadRight.getCommand() != "DoNothing") && (DPadRight.getCommand() != "Jump") && (DPadRight.getCommand() != "UndoButton") && (DPadRight.getCommand() != "RemapButton")) { inputs.Push(DPadRight); } cooldown = maxCD; DPadRight.Execute(player, inputs.Peek()); if (DPadRight.getCommand() == "UndoButton") { inputs.Pop(); } else if (DPadRight.getCommand() == "RemapButton") { remapping = true; ResetAllButtons(); } } //perform action linked to left bumper else if (ControllerPluginWrapper.GetButtonDown(0, 8)) { if ((L1.getCommand() != "DoNothing") && (L1.getCommand() != "Jump") && (L1.getCommand() != "UndoButton") && (L1.getCommand() != "RemapButton")) { inputs.Push(L1); } cooldown = maxCD; L1.Execute(player, inputs.Peek()); if (L1.getCommand() == "UndoButton") { inputs.Pop(); } else if (L1.getCommand() == "RemapButton") { remapping = true; ResetAllButtons(); } } //perform action linked to right bumper else if (ControllerPluginWrapper.GetButtonDown(0, 9)) { if ((R1.getCommand() != "DoNothing") && (R1.getCommand() != "Jump") && (R1.getCommand() != "UndoButton") && (R1.getCommand() != "RemapButton")) { inputs.Push(R1); } cooldown = maxCD; R1.Execute(player, inputs.Peek()); if (R1.getCommand() == "UndoButton") { inputs.Pop(); } else if (R1.getCommand() == "RemapButton") { remapping = true; ResetAllButtons(); } } //perform action linked to left stick pressed else if (ControllerPluginWrapper.GetButtonDown(0, 10)) { if ((LStickPress.getCommand() != "DoNothing") && (LStickPress.getCommand() != "Jump") && (LStickPress.getCommand() != "UndoButton") && (LStickPress.getCommand() != "RemapButton")) { inputs.Push(LStickPress); } cooldown = maxCD; LStickPress.Execute(player, inputs.Peek()); if (LStickPress.getCommand() == "UndoButton") { inputs.Pop(); } else if (LStickPress.getCommand() == "RemapButton") { remapping = true; ResetAllButtons(); } } //perform action linked to right stick pressed else if (ControllerPluginWrapper.GetButtonDown(0, 11)) { if ((RStickPress.getCommand() != "DoNothing") && (RStickPress.getCommand() != "Jump") && (RStickPress.getCommand() != "UndoButton") && (RStickPress.getCommand() != "RemapButton")) { inputs.Push(RStickPress); } cooldown = maxCD; RStickPress.Execute(player, inputs.Peek()); if (RStickPress.getCommand() == "UndoButton") { inputs.Pop(); } else if (RStickPress.getCommand() == "RemapButton") { remapping = true; ResetAllButtons(); } } //perform action linked to start button else if (ControllerPluginWrapper.GetButtonDown(0, 12)) { if ((Pause.getCommand() != "DoNothing") && (Pause.getCommand() != "Jump") && (Pause.getCommand() != "UndoButton") && (Pause.getCommand() != "RemapButton")) { inputs.Push(Pause); } cooldown = maxCD; Pause.Execute(player, inputs.Peek()); if (Pause.getCommand() == "UndoButton") { inputs.Pop(); } else if (Pause.getCommand() == "RemapButton") { remapping = true; ResetAllButtons(); } } //perform action linked to back button else if (ControllerPluginWrapper.GetButtonDown(0, 13)) { if ((Select.getCommand() != "DoNothing") && (Select.getCommand() != "Jump") && (Select.getCommand() != "UndoButton") && (Select.getCommand() != "RemapButton")) { inputs.Push(Select); } cooldown = maxCD; Select.Execute(player, inputs.Peek()); if (Select.getCommand() == "UndoButton") { inputs.Pop(); } else if (Select.getCommand() == "RemapButton") { remapping = true; ResetAllButtons(); } } //perform action linked to right trigger else if (ControllerPluginWrapper.RightTrigger(0) > 0.1f) { if ((RightTrigger.getCommand() != "DoNothing") && (RightTrigger.getCommand() != "Jump") && (RightTrigger.getCommand() != "UndoButton") && (RightTrigger.getCommand() != "RemapButton")) { inputs.Push(RightTrigger); } cooldown = maxCD; RightTrigger.Execute(player, inputs.Peek()); if (RightTrigger.getCommand() == "UndoButton") { inputs.Pop(); } else if (RightTrigger.getCommand() == "RemapButton") { remapping = true; ResetAllButtons(); } } //perform action linked to left trigger else if (ControllerPluginWrapper.LeftTrigger(0) > 0.1f) { if ((LeftTrigger.getCommand() != "DoNothing") && (LeftTrigger.getCommand() != "Jump") && (LeftTrigger.getCommand() != "UndoButton") && (LeftTrigger.getCommand() != "RemapButton")) { inputs.Push(LeftTrigger); } cooldown = maxCD; LeftTrigger.Execute(player, inputs.Peek()); if (LeftTrigger.getCommand() == "UndoButton") { inputs.Pop(); } else if (LeftTrigger.getCommand() == "RemapButton") { remapping = true; ResetAllButtons(); } } }
public void Update() { vibrationStrength += (vibrationFadeToStrength - vibrationStrength) * vibrationFadeSpeed; if (!useAllControllers) { I.GamePad.SetVibration(playerIndex, vibrationStrength, vibrationStrength); var state = I.GamePad.GetState(playerIndex); var buttons = state.Buttons; Back.Update(buttons.Back == I.ButtonState.Pressed); Start.Update(buttons.Start == I.ButtonState.Pressed); A.Update(buttons.A == I.ButtonState.Pressed); B.Update(buttons.B == I.ButtonState.Pressed); X.Update(buttons.X == I.ButtonState.Pressed); Y.Update(buttons.Y == I.ButtonState.Pressed); LeftBumper.Update(buttons.LeftShoulder == I.ButtonState.Pressed); RightBumper.Update(buttons.RightShoulder == I.ButtonState.Pressed); LeftStickButton.Update(buttons.LeftStick == I.ButtonState.Pressed); RightStickButton.Update(buttons.RightStick == I.ButtonState.Pressed); var triggers = state.Triggers; LeftTrigger.Update(triggers.Left); RightTrigger.Update(triggers.Right); var dPad = state.DPad; DLeft.Update(dPad.Left == I.ButtonState.Pressed); DRight.Update(dPad.Right == I.ButtonState.Pressed); DDown.Update(dPad.Down == I.ButtonState.Pressed); DUp.Update(dPad.Up == I.ButtonState.Pressed); var sticks = I.GamePad.GetState(playerIndex).ThumbSticks; var leftStick = sticks.Left; var rightStick = sticks.Right; LeftStick = new Vector2(leftStick.X, leftStick.Y); RightStick = new Vector2(rightStick.X, rightStick.Y); } else { I.GamePad.SetVibration(F.PlayerIndex.One, vibrationStrength, vibrationStrength); I.GamePad.SetVibration(F.PlayerIndex.Two, vibrationStrength, vibrationStrength); I.GamePad.SetVibration(F.PlayerIndex.Three, vibrationStrength, vibrationStrength); I.GamePad.SetVibration(F.PlayerIndex.Four, vibrationStrength, vibrationStrength); var state1 = I.GamePad.GetState(F.PlayerIndex.One); var state2 = I.GamePad.GetState(F.PlayerIndex.Two); var state3 = I.GamePad.GetState(F.PlayerIndex.Three); var state4 = I.GamePad.GetState(F.PlayerIndex.Four); var buttons1 = state1.Buttons; var buttons2 = state2.Buttons; var buttons3 = state3.Buttons; var buttons4 = state4.Buttons; Back.Update(buttons1.Back == I.ButtonState.Pressed || buttons2.Back == I.ButtonState.Pressed || buttons3.Back == I.ButtonState.Pressed || buttons4.Back == I.ButtonState.Pressed); Start.Update(buttons1.Start == I.ButtonState.Pressed || buttons2.Start == I.ButtonState.Pressed || buttons3.Start == I.ButtonState.Pressed || buttons4.Start == I.ButtonState.Pressed); A.Update(buttons1.A == I.ButtonState.Pressed || buttons2.A == I.ButtonState.Pressed || buttons3.A == I.ButtonState.Pressed || buttons4.A == I.ButtonState.Pressed); B.Update(buttons1.B == I.ButtonState.Pressed || buttons2.B == I.ButtonState.Pressed || buttons3.B == I.ButtonState.Pressed || buttons4.B == I.ButtonState.Pressed); X.Update(buttons1.X == I.ButtonState.Pressed || buttons2.X == I.ButtonState.Pressed || buttons3.X == I.ButtonState.Pressed || buttons4.X == I.ButtonState.Pressed); Y.Update(buttons1.Y == I.ButtonState.Pressed || buttons2.Y == I.ButtonState.Pressed || buttons3.Y == I.ButtonState.Pressed || buttons4.Y == I.ButtonState.Pressed); LeftBumper.Update(buttons1.LeftShoulder == I.ButtonState.Pressed || buttons2.LeftShoulder == I.ButtonState.Pressed || buttons3.LeftShoulder == I.ButtonState.Pressed || buttons4.LeftShoulder == I.ButtonState.Pressed); RightBumper.Update(buttons1.RightShoulder == I.ButtonState.Pressed || buttons2.RightShoulder == I.ButtonState.Pressed || buttons3.RightShoulder == I.ButtonState.Pressed || buttons4.RightShoulder == I.ButtonState.Pressed); LeftStickButton.Update(buttons1.LeftStick == I.ButtonState.Pressed || buttons2.LeftStick == I.ButtonState.Pressed || buttons3.LeftStick == I.ButtonState.Pressed || buttons4.LeftStick == I.ButtonState.Pressed); RightStickButton.Update(buttons1.RightStick == I.ButtonState.Pressed || buttons2.RightStick == I.ButtonState.Pressed || buttons3.RightStick == I.ButtonState.Pressed || buttons4.RightStick == I.ButtonState.Pressed); var triggers1 = state1.Triggers; var triggers2 = state2.Triggers; var triggers3 = state3.Triggers; var triggers4 = state4.Triggers; LeftTrigger.Update(System.Math.Min(triggers1.Left + triggers2.Left + triggers3.Left + triggers4.Left, 1)); RightTrigger.Update(System.Math.Min(triggers1.Right + triggers2.Right + triggers3.Right + triggers4.Right, 1)); var dPad1 = state1.DPad; var dPad2 = state2.DPad; var dPad3 = state3.DPad; var dPad4 = state4.DPad; DLeft.Update(dPad1.Left == I.ButtonState.Pressed || dPad2.Left == I.ButtonState.Pressed || dPad3.Left == I.ButtonState.Pressed || dPad4.Left == I.ButtonState.Pressed); DRight.Update(dPad1.Right == I.ButtonState.Pressed || dPad2.Right == I.ButtonState.Pressed || dPad3.Right == I.ButtonState.Pressed || dPad4.Right == I.ButtonState.Pressed); DDown.Update(dPad1.Down == I.ButtonState.Pressed || dPad2.Down == I.ButtonState.Pressed || dPad3.Down == I.ButtonState.Pressed || dPad4.Down == I.ButtonState.Pressed); DUp.Update(dPad1.Up == I.ButtonState.Pressed || dPad2.Up == I.ButtonState.Pressed || dPad3.Up == I.ButtonState.Pressed || dPad4.Up == I.ButtonState.Pressed); var sticks1 = I.GamePad.GetState(F.PlayerIndex.One).ThumbSticks; var sticks2 = I.GamePad.GetState(F.PlayerIndex.Two).ThumbSticks; var sticks3 = I.GamePad.GetState(F.PlayerIndex.Three).ThumbSticks; var sticks4 = I.GamePad.GetState(F.PlayerIndex.Four).ThumbSticks; var leftStick = (sticks1.Left + sticks2.Left + sticks3.Left + sticks4.Left); var rightStick = (sticks1.Right + sticks2.Right + sticks3.Right + sticks4.Right); LeftStick = new Vector2(leftStick.X, leftStick.Y).Min(1); RightStick = new Vector2(rightStick.X, rightStick.Y).Min(1); } }
public virtual void Update(float elapsed) { sinceCheckedConnected += elapsed; if (sinceCheckedConnected >= ConnectedCheckFrequency) { sinceCheckedConnected -= ConnectedCheckFrequency; if (Application.platform.IsOSX()) { Connected = Input.GetJoystickNames().Length > (int)playerIndex; } else if (Application.platform.IsWindows()) { Connected = GamePad.GetState(PlayerIndex).IsConnected; } } if (!Connected) { return; } // XInput.NET if (Application.platform.IsWindows()) { GamePadState gamepadState; try { gamepadState = GamePad.GetState(PlayerIndex, GamePadDeadZone.None); } catch { return; } // Vibration if (leftMotor.Active) { leftMotor = UpdateMotor(leftMotor, elapsed); } if (rightMotor.Active) { rightMotor = UpdateMotor(rightMotor, elapsed); } if (leftMotor.LastAmount != leftMotor.CurrentAmount || rightMotor.LastAmount != rightMotor.CurrentAmount) { GamePad.SetVibration(PlayerIndex, leftMotor.CurrentAmount, rightMotor.CurrentAmount); } // Shoulders LeftShoulder = LeftShoulder.NextState(gamepadState.Buttons.LeftShoulder == ButtonState.Pressed, elapsed); RightShoulder = RightShoulder.NextState(gamepadState.Buttons.RightShoulder == ButtonState.Pressed, elapsed); // Triggers LeftTrigger = LeftTrigger.NextState(gamepadState.Triggers.Left, elapsed); RightTrigger = RightTrigger.NextState(gamepadState.Triggers.Right, elapsed); // Buttons Start = Start.NextState(gamepadState.Buttons.Start == ButtonState.Pressed, elapsed); Back = Back.NextState(gamepadState.Buttons.Back == ButtonState.Pressed, elapsed); A = A.NextState(gamepadState.Buttons.A == ButtonState.Pressed, elapsed); B = B.NextState(gamepadState.Buttons.B == ButtonState.Pressed, elapsed); X = X.NextState(gamepadState.Buttons.X == ButtonState.Pressed, elapsed); Y = Y.NextState(gamepadState.Buttons.Y == ButtonState.Pressed, elapsed); // D-Pad DPad = DPad.NextState(gamepadState.DPad.Up == ButtonState.Pressed, gamepadState.DPad.Down == ButtonState.Pressed, gamepadState.DPad.Left == ButtonState.Pressed, gamepadState.DPad.Right == ButtonState.Pressed, elapsed); // Deadzone that shit const float DeadZone = 0.1f; var left = new Vector2(gamepadState.ThumbSticks.Left.X, gamepadState.ThumbSticks.Left.Y); var right = new Vector2(gamepadState.ThumbSticks.Right.X, gamepadState.ThumbSticks.Right.Y); if (Math.Abs(left.x) < DeadZone) { left.x = 0; } else { left.x = (left.x - DeadZone * Math.Sign(left.x)) / (1 - DeadZone); } if (Math.Abs(left.y) < DeadZone) { left.y = 0; } else { left.y = (left.y - DeadZone * Math.Sign(left.y)) / (1 - DeadZone); } if (Math.Abs(right.x) < DeadZone) { right.x = 0; } else { right.x = (right.x - DeadZone * Math.Sign(right.x)) / (1 - DeadZone); } if (Math.Abs(right.y) < DeadZone) { right.y = 0; } else { right.y = (right.y - DeadZone * Math.Sign(right.y)) / (1 - DeadZone); } // Thumbsticks LeftStick = LeftStick.NextState(left, gamepadState.Buttons.LeftStick == ButtonState.Pressed, elapsed); RightStick = LeftStick.NextState(right, gamepadState.Buttons.RightStick == ButtonState.Pressed, elapsed); } // Tattiebogle if (Application.platform.IsOSX()) { string playerPrefix = "Player" + ((int)PlayerIndex + 1); // Shoulders LeftShoulder = LeftShoulder.NextState(Input.GetButton(playerPrefix + " LeftShoulder"), elapsed); RightShoulder = RightShoulder.NextState(Input.GetButton(playerPrefix + " RightShoulder"), elapsed); // Triggers LeftTrigger = LeftTrigger.NextState(Input.GetAxisRaw(playerPrefix + " LeftTrigger"), elapsed); RightTrigger = RightTrigger.NextState(Input.GetAxisRaw(playerPrefix + " RightTrigger"), elapsed); // Buttons Start = Start.NextState(Input.GetButton(playerPrefix + " Start"), elapsed); Back = Back.NextState(Input.GetButton(playerPrefix + " Back"), elapsed); A = A.NextState(Input.GetButton(playerPrefix + " A"), elapsed); B = B.NextState(Input.GetButton(playerPrefix + " B"), elapsed); X = X.NextState(Input.GetButton(playerPrefix + " X"), elapsed); Y = Y.NextState(Input.GetButton(playerPrefix + " Y"), elapsed); // D-Pad DPad = DPad.NextState(Input.GetButton(playerPrefix + " DPadUp"), Input.GetButton(playerPrefix + " DPadDown"), Input.GetButton(playerPrefix + " DPadLeft"), Input.GetButton(playerPrefix + " DPadRight"), elapsed); // Deadzone that shit const float DeadZone = 0.1f; var left = new Vector2(Input.GetAxisRaw(playerPrefix + " LeftStick X"), Input.GetAxisRaw(playerPrefix + " LeftStick Y") * -1); var right = new Vector2(Input.GetAxisRaw(playerPrefix + " RightStick X"), Input.GetAxisRaw(playerPrefix + " RightStick Y") * -1); if (Math.Abs(left.x) < DeadZone) { left.x = 0; } else { left.x = (left.x - DeadZone * Math.Sign(left.x)) / (1 - DeadZone); } if (Math.Abs(left.y) < DeadZone) { left.y = 0; } else { left.y = (left.y - DeadZone * Math.Sign(left.y)) / (1 - DeadZone); } if (Math.Abs(right.x) < DeadZone) { right.x = 0; } else { right.x = (right.x - DeadZone * Math.Sign(right.x)) / (1 - DeadZone); } if (Math.Abs(right.y) < DeadZone) { right.y = 0; } else { right.y = (right.y - DeadZone * Math.Sign(right.y)) / (1 - DeadZone); } // Thumbsticks LeftStick = LeftStick.NextState(left, Input.GetButton(playerPrefix + " LeftStick Press"), elapsed); RightStick = LeftStick.NextState(right, Input.GetButton(playerPrefix + " RightStick Press"), elapsed); } }
public void Update(TimeSpan elapsed) { if (!Connected) { return; } State state = Controller.GetState(); var gamepadState = state.Gamepad; // Sadly we can't really use the packet information because everything is temporal // Even if everything stayed the same, that's valid data (elapsed time goes up, etc.) // Vibration if (leftMotor.Active) { leftMotor = UpdateMotor(leftMotor, elapsed); } if (rightMotor.Active) { rightMotor = UpdateMotor(rightMotor, elapsed); } if (leftMotor.LastAmount != leftMotor.CurrentAmount || rightMotor.LastAmount != rightMotor.CurrentAmount) { Controller.SetVibration(new Vibration { LeftMotorSpeed = (ushort)(leftMotor.CurrentAmount * ushort.MaxValue), RightMotorSpeed = (ushort)(rightMotor.CurrentAmount * ushort.MaxValue) }); } // Shoulders LeftShoulder = LeftShoulder.NextState((gamepadState.Buttons & GamepadButtonFlags.LeftShoulder) != 0, elapsed); RightShoulder = RightShoulder.NextState((gamepadState.Buttons & GamepadButtonFlags.RightShoulder) != 0, elapsed); // Triggers LeftTrigger = LeftTrigger.NextState(gamepadState.LeftTrigger / (float)byte.MaxValue, elapsed); RightTrigger = RightTrigger.NextState(gamepadState.RightTrigger / (float)byte.MaxValue, elapsed); // Buttons Start = Start.NextState((gamepadState.Buttons & GamepadButtonFlags.Start) != 0); Back = Back.NextState((gamepadState.Buttons & GamepadButtonFlags.Back) != 0); A = A.NextState((gamepadState.Buttons & GamepadButtonFlags.A) != 0, elapsed); B = B.NextState((gamepadState.Buttons & GamepadButtonFlags.B) != 0, elapsed); X = X.NextState((gamepadState.Buttons & GamepadButtonFlags.X) != 0, elapsed); Y = Y.NextState((gamepadState.Buttons & GamepadButtonFlags.Y) != 0, elapsed); // D-Pad DPad = DPad.NextState((gamepadState.Buttons & GamepadButtonFlags.DPadUp) != 0, (gamepadState.Buttons & GamepadButtonFlags.DPadDown) != 0, (gamepadState.Buttons & GamepadButtonFlags.DPadLeft) != 0, (gamepadState.Buttons & GamepadButtonFlags.DPadRight) != 0, elapsed); // Thumb sticks LeftStick = LeftStick.NextState( Normalize(gamepadState.LeftThumbX, gamepadState.LeftThumbY, Gamepad.GamepadLeftThumbDeadZone), (gamepadState.Buttons & GamepadButtonFlags.LeftThumb) != 0, elapsed); RightStick = RightStick.NextState( Normalize(gamepadState.RightThumbX, gamepadState.RightThumbY, Gamepad.GamepadRightThumbDeadZone), (gamepadState.Buttons & GamepadButtonFlags.RightThumb) != 0, elapsed); }
private void OnGUI() { if (showValues) { Rect rect = new Rect(0, 0, 400, 30); GUILayout.BeginHorizontal(); GUILayout.BeginVertical(); //// GUILayout.TextArea(LeftMenuDown.ToString()); GUILayout.TextArea(LeftMenu.ToString()); GUILayout.TextArea(LeftMenuUp.ToString()); GUILayout.TextArea(LeftPadPressDown.ToString()); GUILayout.TextArea(LeftPadPress.ToString()); GUILayout.TextArea(LeftPadPressUp.ToString()); GUILayout.TextArea(LeftPadTouchDown.ToString()); GUILayout.TextArea(LeftPadTouch.ToString()); GUILayout.TextArea(LeftPadTouchUp.ToString()); GUILayout.TextArea(LeftTouchPad.x.ToString("F2") + " " + LeftTouchPad.y.ToString("F2")); GUILayout.TextArea(LeftTriggerMagnitude.ToString("F2")); GUILayout.TextArea(LeftTriggerDown.ToString()); GUILayout.TextArea(LeftTrigger.ToString()); GUILayout.TextArea(LeftTriggerUp.ToString()); GUILayout.TextArea(LeftGripDown.ToString()); GUILayout.TextArea(LeftGrip.ToString()); GUILayout.TextArea(LeftGripUp.ToString()); GUILayout.EndVertical(); GUILayout.BeginVertical(); //// GUILayout.TextArea(RightMenuDown.ToString()); GUILayout.TextArea(RightMenu.ToString()); GUILayout.TextArea(RightMenuUp.ToString()); GUILayout.TextArea(RightPadPressDown.ToString()); GUILayout.TextArea(RightPadPress.ToString()); GUILayout.TextArea(RightPadPressUp.ToString()); GUILayout.TextArea(RightPadTouchDown.ToString()); GUILayout.TextArea(RightPadTouch.ToString()); GUILayout.TextArea(RightPadTouchUp.ToString()); GUILayout.TextArea(RightTouchPad.x.ToString("F2") + " " + RightTouchPad.y.ToString("F2")); GUILayout.TextArea(RightTriggerMagnitude.ToString("F2")); GUILayout.TextArea(RightTriggerDown.ToString()); GUILayout.TextArea(RightTrigger.ToString()); GUILayout.TextArea(RightTriggerUp.ToString()); GUILayout.TextArea(RightGripDown.ToString()); GUILayout.TextArea(RightGrip.ToString()); GUILayout.TextArea(RightGripUp.ToString()); GUILayout.EndVertical(); GUILayout.EndHorizontal(); } }
public virtual void Update(float elapsed) { sinceCheckedConnected += elapsed; if (sinceCheckedConnected >= ConnectedCheckFrequency) { sinceCheckedConnected -= ConnectedCheckFrequency; Connected = GamePad.GetState(PlayerIndex).IsConnected; } if (!Connected) { return; } GamePadState gamepadState; try { gamepadState = GamePad.GetState(PlayerIndex, GamePadDeadZone.None); } catch { return; } // Vibration if (leftMotor.Active) { leftMotor = UpdateMotor(leftMotor, elapsed); } if (rightMotor.Active) { rightMotor = UpdateMotor(rightMotor, elapsed); } if (leftMotor.LastAmount != leftMotor.CurrentAmount || rightMotor.LastAmount != rightMotor.CurrentAmount) { GamePad.SetVibration(PlayerIndex, leftMotor.CurrentAmount, rightMotor.CurrentAmount); } // Shoulders LeftShoulder = LeftShoulder.NextState(gamepadState.Buttons.LeftShoulder == ButtonState.Pressed, elapsed); RightShoulder = RightShoulder.NextState(gamepadState.Buttons.RightShoulder == ButtonState.Pressed, elapsed); // Triggers LeftTrigger = LeftTrigger.NextState(gamepadState.Triggers.Left, elapsed); RightTrigger = RightTrigger.NextState(gamepadState.Triggers.Right, elapsed); // Buttons Start = Start.NextState(gamepadState.Buttons.Start == ButtonState.Pressed); Back = Back.NextState(gamepadState.Buttons.Back == ButtonState.Pressed); A = A.NextState(gamepadState.Buttons.A == ButtonState.Pressed, elapsed); B = B.NextState(gamepadState.Buttons.B == ButtonState.Pressed, elapsed); X = X.NextState(gamepadState.Buttons.X == ButtonState.Pressed, elapsed); Y = Y.NextState(gamepadState.Buttons.Y == ButtonState.Pressed, elapsed); // D-Pad DPad = DPad.NextState(gamepadState.DPad.Up == ButtonState.Pressed, gamepadState.DPad.Down == ButtonState.Pressed, gamepadState.DPad.Left == ButtonState.Pressed, gamepadState.DPad.Right == ButtonState.Pressed, elapsed); // Deadzone that shit const float DeadZone = 0.2f; var left = new Vector2(gamepadState.ThumbSticks.Left.X, gamepadState.ThumbSticks.Left.Y); var right = new Vector2(gamepadState.ThumbSticks.Right.X, gamepadState.ThumbSticks.Right.Y); if (Math.Abs(left.x) < DeadZone) { left.x = 0; } else { left.x = (left.x - DeadZone * Math.Sign(left.x)) / (1 - DeadZone); } if (Math.Abs(left.y) < DeadZone) { left.y = 0; } else { left.y = (left.y - DeadZone * Math.Sign(left.y)) / (1 - DeadZone); } if (Math.Abs(right.x) < DeadZone) { right.x = 0; } else { right.x = (right.x - DeadZone * Math.Sign(right.x)) / (1 - DeadZone); } if (Math.Abs(right.y) < DeadZone) { right.y = 0; } else { right.y = (right.y - DeadZone * Math.Sign(right.y)) / (1 - DeadZone); } // Thumbsticks LeftStick = LeftStick.NextState(left, gamepadState.Buttons.LeftStick == ButtonState.Pressed, elapsed); RightStick = LeftStick.NextState(right, gamepadState.Buttons.RightStick == ButtonState.Pressed, elapsed); }