Beispiel #1
0
 void Awake()
 {
     m_schemeLookup = new Dictionary <string, ControlScheme>();
     playerSchemes  = new ControlScheme[numPlayers];
     ScanService.OnAwake();
     GamepadHandler.OnAwake();
 }
        public bool GetButtonUp(int playerID)
        {
            bool value = false;

            if (m_type == InputType.KeyButton)
            {
                value = Input.GetKeyUp(m_positive);
            }
            else if (m_type == InputType.GamepadButton)
            {
                value = GamepadHandler.GetButtonUp(m_gamepadButton, playerID);
            }
            else if (m_type == InputType.GamepadAnalogButton)
            {
                value = axesAsButtonValues[playerID] == ButtonState.JustReleased;
            }
            else if (m_type == InputType.DigitalAxis)
            {
                value = Input.GetKeyUp(useNegativeAxisForButton ? m_negative : m_positive);
            }
            else if (m_type == InputType.GamepadAxis)
            {
                value = axesAsButtonValues[playerID] == ButtonState.JustReleased;
            }
            else if (m_type == InputType.MouseAxis)
            {
                value = axesAsButtonValues[playerID] == ButtonState.JustReleased;
            }

            return(value);
        }
Beispiel #3
0
        public bool AnyInput(int playerID)
        {
            switch (m_type)
            {
            case InputType.KeyButton:
                return(Input.GetKey(m_positive));

            case InputType.GamepadAnalogButton:
                return(axesAsButtonValues[playerID] == ButtonState.Pressed || axesAsButtonValues[playerID] == ButtonState.JustPressed);

            case InputType.GamepadButton:
                return(GamepadHandler.GetButton(m_gamepadButton, playerID));

            case InputType.GamepadAxis:
                return(GamepadHandler.GetAxisRaw(m_gamepadAxis, playerID, m_deadZone) != 0f);

            case InputType.DigitalAxis:
                return(digitalAxisValue != 0);

            case InputType.MouseAxis:
                return(Input.GetAxisRaw(rawMouseAxisName) != 0);

            default:
                return(false);
            }
        }
        public void Update(float deltaTime)
        {
            if (m_type == InputType.GamepadAnalogButton)
            {
                for (int i = 0; i < maxJoysticks; i++)
                {
                    if (GamepadHandler.GamepadAvailable(i, out _))
                    {
                        UpdateAxisAsButtons(i, GamepadHandler.GetAxis(m_gamepadAxis, i));
                    }
                }
            }
            else if (m_type == InputType.GamepadAxis)
            {
                if (updateAsButton)
                {
                    for (int i = 0; i < maxJoysticks; i++)
                    {
                        if (GamepadHandler.GamepadAvailable(i, out _))
                        {
                            UpdateAxisAsButtons(i, GetAxis(i));
                        }
                    }
                }
            }
            else if (m_type == InputType.MouseAxis)
            {
                if (updateAsButton)
                {
                    UpdateAxisAsButtons(0, GetAxis(0));
                }
            }

            if (m_type == InputType.DigitalAxis)
            {
                UpdateDigitalAxisValue(deltaTime);
            }
            else if (m_type == InputType.KeyButton)
            {
                if (updateAsAxis)
                {
                    UpdateButtonAsAxisValue(deltaTime, 0);
                }
            }
            else if (m_type == InputType.GamepadButton)
            {
                if (updateAsAxis)
                {
                    for (int i = 0; i < maxJoysticks; i++)
                    {
                        if (GamepadHandler.GamepadAvailable(i, out _))
                        {
                            UpdateButtonAsAxisValue(deltaTime, i);
                        }
                    }
                }
            }
        }
Beispiel #5
0
        void Update()
        {
            float unscaledDeltaTime = Time.unscaledDeltaTime;

            GamepadHandler.OnUpdate(unscaledDeltaTime);
            for (int i = 0; i < m_controlSchemes.Count; i++)
            {
                m_controlSchemes[i].Update(unscaledDeltaTime);
            }
            ScanService.Update(Time.unscaledTime, KeyCode.Escape, 5.0f, numPlayers);
        }
Beispiel #6
0
        public float GetAxisRaw(int playerID)
        {
            float axis = 0;

            if (m_type == InputType.DigitalAxis)
            {
                if (Input.GetKey(m_positive))
                {
                    axis = m_invert ? -AXIS_POSITIVE : AXIS_POSITIVE;
                }
                else if (Input.GetKey(m_negative))
                {
                    axis = m_invert ? -AXIS_NEGATIVE : AXIS_NEGATIVE;
                }
            }
            else if (m_type == InputType.MouseAxis)
            {
                axis = Input.GetAxisRaw(rawMouseAxisName);
                axis = m_invert ? -axis : axis;
            }
            else if (m_type == InputType.GamepadAxis)
            {
                axis = GamepadHandler.GetAxisRaw(m_gamepadAxis, playerID, m_deadZone);
                axis = m_invert ? -axis : axis;
            }

            else if (m_type == InputType.KeyButton)
            {
                if (GetButton(playerID))
                {
                    axis = m_invert ? -AXIS_POSITIVE : AXIS_POSITIVE;
                }
            }
            else if (m_type == InputType.GamepadButton)
            {
                if (GetButton(playerID))
                {
                    axis = m_invert ? -AXIS_POSITIVE : AXIS_POSITIVE;
                }
            }
            else if (m_type == InputType.GamepadAnalogButton)
            {
                if (GetButton(playerID))
                {
                    axis = m_invert ? -AXIS_POSITIVE : AXIS_POSITIVE;
                }
            }


            return(axis);
        }
        public float GetAxis(int playerID)
        {
            float axis = 0;

            if (m_type == InputType.DigitalAxis)
            {
                axis = m_invert ? -digitalAxisValue : digitalAxisValue;
            }
            else if (m_type == InputType.MouseAxis)
            {
                axis = Input.GetAxis(rawMouseAxisName) * m_sensitivity;
                axis = m_invert ? -axis : axis;
            }
            else if (m_type == InputType.GamepadAxis)
            {
                axis = GamepadHandler.GetAxis(m_gamepadAxis, playerID);
                if ((axis < 0 && axis > -m_deadZone) || (axis > 0 && axis < m_deadZone))
                {
                    axis = AXIS_NEUTRAL;
                }

                axis = Mathf.Clamp(axis * m_sensitivity, -1, 1);
                axis = m_invert ? -axis : axis;
            }
            else if (m_type == InputType.GamepadAnalogButton)
            {
                axis = GamepadHandler.GetAxis(m_gamepadAxis, playerID);
                if ((axis < 0 && axis > -m_deadZone) || (axis > 0 && axis < m_deadZone))
                {
                    axis = AXIS_NEUTRAL;
                }

                axis = Mathf.Clamp(axis * m_sensitivity, -1, 1);
                axis = m_invert ? -axis : axis;
            }


            else if (m_type == InputType.KeyButton)
            {
                axis = buttonsAsAxisValue[0];
                axis = m_invert ? -axis : axis;
            }
            else if (m_type == InputType.GamepadButton)
            {
                axis = buttonsAsAxisValue[playerID];
                axis = m_invert ? -axis : axis;
            }

            return(axis);
        }
Beispiel #8
0
        protected override void Awake()
        {
            base.Awake();

            m_schemeLookup = new Dictionary <string, ControlScheme>();
            playerSchemes  = new ControlScheme[numPlayers];
            ScanService.OnAwake();
            GamepadHandler.OnAwake();

            // try and load custom runtime bindings
            if (!LoadCustomSchemes())
            {
                Debug.Log("Couldnt find custom control bindings, loading defaults...");
                LoadDefaultSchemes();
            }
        }
Beispiel #9
0
        void Update()
        {
            float unscaledDeltaTime = Time.unscaledDeltaTime;

            GamepadHandler.OnUpdate(unscaledDeltaTime);

            updatedSchemes.Clear();
            for (int i = 0; i < playerSchemes.Length; i++)
            {
                if (playerSchemes[i] != null)
                {
                    if (!updatedSchemes.Contains(playerSchemes[i]))
                    {
                        playerSchemes[i].Update(unscaledDeltaTime);
                        updatedSchemes.Add(playerSchemes[i]);
                    }
                }
            }

            ScanService.Update(Time.unscaledTime, KeyCode.Escape, 5.0f, numPlayers);
        }
Beispiel #10
0
 void Start()
 {
     GamepadHandler.OnStart();
 }