Пример #1
0
 public void AddCustomController(IGamepadController controller)
 {
     if (!customControllers.Contains(controller))
     {
         customControllers.Add(controller);
     }
 }
Пример #2
0
        public override void GetGamepadAxisRawRaw(IGamepadController gamepad, GamepadAxis axis, out float axisX, out float axisY)
        {
            var axisValue = Vector2.zero;

            if (axis == GamepadAxis.None)
            {
                axisX = 0f;
                axisY = 0f;

                return;
            }

            switch (axis)
            {
            case GamepadAxis.D_Pad:
                axisValue.x = GetGamepadAxisRaw(gamepad, GetGamepadAxisRawMapping(GamepadAxis.D_Pad_Left));
                axisValue.y = GetGamepadAxisRaw(gamepad, GetGamepadAxisRawMapping(GamepadAxis.D_Pad_Top));
                break;

            case GamepadAxis.L_Stick:
                axisValue.x = GetGamepadAxisRaw(gamepad, GetGamepadAxisRawMapping(GamepadAxis.L_Stick_Left));
                axisValue.y = GetGamepadAxisRaw(gamepad, GetGamepadAxisRawMapping(GamepadAxis.L_Stick_Top));
                break;

            case GamepadAxis.R_Stick:
                axisValue.x = GetGamepadAxisRaw(gamepad, GetGamepadAxisRawMapping(GamepadAxis.R_Stick_Left));
                axisValue.y = GetGamepadAxisRaw(gamepad, GetGamepadAxisRawMapping(GamepadAxis.R_Stick_Top));
                break;
            }

            axisX = axisValue.x;
            axisY = axisValue.y;
        }
Пример #3
0
        public override bool GetGamepadButtonReleasedRaw(IGamepadController gamepad, GamepadButtonRaw button)
        {
            if (button == GamepadButtonRaw.None)
            {
                return(false);
            }

            return(UnityEngine.Input.GetKeyUp((UnityEngine.KeyCode)(GetGamepadKeyCodeOffset(gamepad) - 1 + ((int)button))));
        }
Пример #4
0
        private int GetGamepadIndex(IGamepadController gamepad)
        {
            var gamepadIndex = 0;

            if (gamepads.Contains(gamepad))
            {
                gamepadIndex = (gamepads.IndexOf(gamepad) + 1);
            }

            return(gamepadIndex);
        }
Пример #5
0
        public override bool GetGamepadButtonReleasedRaw(IGamepadController gamepad, GamepadButtonRaw button)
        {
            if (button == GamepadButtonRaw.None || button == GamepadButtonRaw.Button_9 || (int)button >= (int)GamepadButtonRaw.Button_12)
            {
                return(false);
            }

            var gamepadRaw = GetGamepad(gamepad);

            if (gamepadRaw == null)
            {
                return(false);
            }

            return(gamepadRaw[GetGamepadButtonMapping(button)].wasReleasedThisFrame);
        }
Пример #6
0
        public override float GetGamepadAxisRaw(IGamepadController gamepad, GamepadAxisRaw axis)
        {
            var result = 0f;

            var gamepadRaw = GetGamepad(gamepad);

            if (gamepadRaw != null)
            {
                switch (axis)
                {
                case GamepadAxisRaw.AxisX:
                    result = gamepadRaw.leftStick.x.ReadUnprocessedValue();
                    break;

                case GamepadAxisRaw.AxisY:
                    result = gamepadRaw.leftStick.y.ReadUnprocessedValue();
                    break;

                case GamepadAxisRaw.Axis4:
                    result = gamepadRaw.rightStick.x.ReadUnprocessedValue();
                    break;

                case GamepadAxisRaw.Axis5:
                    result = gamepadRaw.rightStick.y.ReadUnprocessedValue();
                    break;

                case GamepadAxisRaw.Axis3:
                    result = gamepadRaw.leftTrigger.ReadUnprocessedValue();
                    break;

                case GamepadAxisRaw.Axis6:
                    result = gamepadRaw.rightTrigger.ReadUnprocessedValue();
                    break;

                case GamepadAxisRaw.Axis7:
                    result = gamepadRaw.dpad.x.ReadUnprocessedValue();
                    break;

                case GamepadAxisRaw.Axis8:
                    result = gamepadRaw.dpad.y.ReadUnprocessedValue();
                    break;
                }
            }

            return(result);
        }
Пример #7
0
        public override float GetGamepadAxisRaw(IGamepadController gamepad, GamepadAxis axis)
        {
            var axisValue = GetGamepadAxisRaw(gamepad, GetGamepadAxisRawMapping(axis));

#if UNITY_STANDALONE_LINUX || UNITY_STANDALONE_OSX
            if (axis == GamepadAxis.D_Pad_Left || axis == GamepadAxis.D_Pad_Top ||
                axis == GamepadAxis.L_Stick_Left || axis == GamepadAxis.L_Stick_Top ||
                axis == GamepadAxis.R_Stick_Left || axis == GamepadAxis.R_Stick_Top)
            {
                axisValue *= -1;
            }
#elif UNITY_STANDALONE_WIN
            if (axis == GamepadAxis.D_Pad_Left ||
                axis == GamepadAxis.L_Stick_Left || axis == GamepadAxis.L_Stick_Top ||
                axis == GamepadAxis.R_Stick_Left || axis == GamepadAxis.R_Stick_Top)
            {
                axisValue *= -1;
            }
#endif

            return(axisValue);
        }
Пример #8
0
        public override float GetGamepadAxisRaw(IGamepadController gamepad, GamepadAxisRaw axis)
        {
            var axisValue = 0f;

            if (axis == GamepadAxisRaw.None)
            {
                return(axisValue);
            }

            var gamepadIndex = GetGamepadIndex(gamepad);
            var axisIndex    = (int)axis;

            if (axisIndex > 0 && gamepadIndex > 0)
            {
                // Input Axis Names (Project Settings -> Input Manager)
                //
                // Axis{#1}_{#2}
                //      Number {#1} should be 1~10 (Axis index)
                //      Number {#2} can be 1~16 (Gamepad index)
                //
                // Important: Set sensibility to 1 and gravity to 0

                var axisName = $"Axis{axisIndex}_{gamepadIndex}";

                try
                {
                    axisValue = UnityEngine.Input.GetAxisRaw(axisName);
                }
                catch (System.Exception e)
                {
                    Log.Exception(null, e);
                }
            }

            return(axisValue);
        }
Пример #9
0
 public InputGamepadConnectedEvent(IGamepadController controller)
 {
     Controller = controller;
 }
Пример #10
0
 public abstract bool GetGamepadButtonReleasedRaw(IGamepadController gamepad, GamepadButtonRaw button);
Пример #11
0
 public override float GetGamepadAxisRaw(IGamepadController gamepad, GamepadAxis axis)
 {
     return(GetGamepadAxisRaw(gamepad, GetGamepadAxisRawMapping(axis)));
 }
Пример #12
0
 private Gamepad GetGamepad(IGamepadController gamepad)
 {
     return(UnityEngine.InputSystem.Gamepad.all.Find(null, g => GetUniqueGamepadId(g) == gamepad.Id));
 }
Пример #13
0
 public abstract float GetGamepadAxisRaw(IGamepadController gamepad, GamepadAxisRaw axis);
Пример #14
0
 public override bool GetGamepadButtonReleasedRaw(IGamepadController gamepad, GamepadButton button)
 {
     return(GetGamepadButtonReleasedRaw(gamepad, GetGamepadButtonRawMapping(button)));
 }
Пример #15
0
        private int GetGamepadKeyCodeOffset(IGamepadController gamepad)
        {
            // Note: Index min = 0, max = 7

            return(350 + ((GetGamepadIndex(gamepad) - 1) * 20));
        }
Пример #16
0
 public abstract void GetGamepadAxisRawRaw(IGamepadController gamepad, GamepadAxis axis, out float axisX, out float axisY);
Пример #17
0
 public abstract bool GetGamepadButtonHeldRaw(IGamepadController gamepad, GamepadButton button);
Пример #18
0
    public static Vector2 GetAxisRaw(this IGamepadController gamepadController, GamepadAxis axis)
    {
        gamepadController.GetAxisRaw(axis, out float axisX, out float axisY);

        return(new Vector2(axisX, axisY));
    }
Пример #19
0
 public void RemoveCustomController(IGamepadController controller)
 {
     customControllers.Remove(controller);
 }