コード例 #1
0
ファイル: ControllerState.cs プロジェクト: MrPnut/SCXI
 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);
     }
 }
コード例 #2
0
 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();
 }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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();
                }
            }
        }
コード例 #5
0
ファイル: GamePad.cs プロジェクト: damian-666/ReignSDK
        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);
            }
        }
コード例 #6
0
    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);
        }
    }
コード例 #7
0
        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);
        }
コード例 #8
0
        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();
            }
        }
コード例 #9
0
ファイル: GamepadState.cs プロジェクト: Collegiennes/pico
    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);
    }