Exemple #1
0
        IEnumerator PollingPressState_Trigger()
        {
            while (true)
            {
                yield return(waitForEndOfFrame);

                bool           _connected = false;
                WVR_DeviceType _type      = this.DeviceType;
                #if UNITY_EDITOR || UNITY_STANDALONE
                if (isEditorMode && !WaveVR.Instance.isSimulatorOn)
                {
                    _connected = WaveVR_Controller.Input(this.DeviceType).connected;
                    _type      = WaveVR_Controller.Input(this.DeviceType).DeviceType;
                }
                else
                #endif
                {
                    if (WaveVR.Instance != null)
                    {
                        WaveVR.Device _device = WaveVR.Instance.getDeviceByType(this.DeviceType);
                        _connected = _device.connected;
                        _type      = _device.type;
                    }
                }

                bool _pressed = false;

                var _triggervalue = state.BtnPressed & Input_Mask_Trigger;
                if (_triggervalue == 0)
                {
                    pre_state.BtnPressed &= ~Input_Mask_Trigger;
                }
                else
                {
                    pre_state.BtnPressed |= _triggervalue;
                }

                #if UNITY_EDITOR || UNITY_STANDALONE
                if (isEditorMode)
                {
                    if (!WaveVR.Instance.isSimulatorOn)
                    {
                        var system = WaveVR_PoseSimulator.Instance;
                        _pressed = system.GetButtonPressState(_type, WVR_InputId.WVR_InputId_Alias1_Trigger);
                    }
                    else
                    {
                        if (WaveVR.Instance != null)
                        {
                            if (_connected)
                            {
                                _pressed = WaveVR_Utils.WVR_GetInputButtonState_S((int)_type, (int)WVR_InputId.WVR_InputId_Alias1_Trigger);
                            }
                        }
                    }
                }
                else
                #endif
                {
                    if (WaveVR.Instance != null)
                    {
                        if (_connected)
                        {
                            _pressed = Interop.WVR_GetInputButtonState(_type, WVR_InputId.WVR_InputId_Alias1_Trigger);
                        }
                    }
                }   // isEditorMode

                if (_pressed)
                {
                    state.BtnPressed |= Input_Mask_Trigger;
                }
                else
                {
                    state.BtnPressed &= ~Input_Mask_Trigger;
                }

                if ((pre_state.BtnPressed ^ state.BtnPressed) != 0) // pre not equal to cur
                {
                    if (((state.BtnPressed & Input_Mask_Trigger) != 0) && ((pre_state.BtnPressed & Input_Mask_Trigger) == 0))
                    {
                        // unpressed -> pressed
                        if (PressDownListenersTrigger != null)
                        {
                            PressDownListenersTrigger();
                        }
                    }

                    if (((state.BtnPressed & Input_Mask_Trigger) == 0) && ((pre_state.BtnPressed & Input_Mask_Trigger) != 0))
                    {
                        // pressed -> unpressed
                        if (PressUpListenersTrigger != null)
                        {
                            PressUpListenersTrigger();
                        }
                    }
                }
            }
        }