Esempio n. 1
0
        /// <summary>
        /// While tracking, observe if the specified button is pressed and update state accordingly
        /// </summary>
        /// <param name="buttonName">The agnostic name of the button</param>
        /// <param name="buttonIndex">The index of the button</param>
        void ButtonInputCheck(string inputName)
        {
            VRInputData updatedInputData = inputs[inputName];


            switch (inputs[inputName].type)
            {
            case InputType.button:
                // Poll GettButtonDown only for binary buttons
                if (Input.GetButtonDown(inputName) && !inputs[inputName].isActive)
                {
                    inputs[inputName].Began();
                    updatedInputData.isActive = true;
                    StartCoroutine(UpdateStatusWhenInputBecomesInactive(inputName));
                }
                break;

            case InputType.axis1D:
                // Poll GetAxis only for float inputs
                if (Input.GetAxis(inputName) > 0 && !inputs[inputName].isActive)
                {
                    inputs[inputName].Began();
                    updatedInputData.isActive = true;
                    StartCoroutine(UpdateStatusWhenInputBecomesInactive(inputName));
                }
                break;

            case InputType.axis2D:

                break;
            }
            changeBuffer.Add(inputName, updatedInputData);
        }
Esempio n. 2
0
        /// <summary>
        /// The VRInputSubscriber class uses this function multiple times at runtime to connect to all its needed inputs.
        /// </summary>
        public void SubscribeToInput(string inputName, UnityAction began, UnityAction finished)
        {
            VRInputData updatedInputData = inputs[inputName];

            updatedInputData.Began    += began;
            updatedInputData.Finished += finished;
            inputs[inputName]          = updatedInputData;
        }
Esempio n. 3
0
        IEnumerator UpdateStatusWhenInputBecomesInactive(string inputName)
        {
            VRInputData updatedInputData = inputs[inputName];

            switch (inputs[inputName].type)
            {
            case InputType.button:
                yield return(new WaitUntil(() => Input.GetButtonUp(inputName)));

                updatedInputData.isActive = false;
                break;

            case InputType.axis1D:
                yield return(new WaitUntil(() => Input.GetAxis(inputName) == 0));

                updatedInputData.isActive = false;
                break;
            }
            inputs[inputName].Finished();
            inputs[inputName] = updatedInputData;
        }