// Update is called once per frame void Update() { if (!WaveVR.Instance.Initialized) { return; } if (WaveVR.Instance.FocusCapturedBySystem) { return; } #if UNITY_EDITOR if (Application.isEditor) { return; } #endif if (!WaveVR_Controller.Input(this.device).connected) { return; } WVR_DeviceType _type = WaveVR_Controller.Input(this.device).DeviceType; uint buttons = 0, touches = 0; uint analogArrayCount = (uint)Interop.WVR_GetInputTypeCount(_type, WVR_InputType.WVR_InputType_Analog); WVR_AnalogState_t[] analogArray = new WVR_AnalogState_t[analogArrayCount]; if (Interop.WVR_GetInputDeviceState(_type, inputMask, ref buttons, ref touches, analogArray, analogArrayCount)) { ClickedEventArgs e; e.device = _type; e.flags = buttons; e.axis = Vector2.zero; /** * for Button **/ if (buttons != 0) { ulong btnState = (ulong)buttons; //if (Log.FLAG_BUTTON) // Log.d (LOG_TAG, "_type: " + _type + " btnState: " + btnState); if ((btnState & Input_Mask_Trigger) != 0) { if (triggerPressed == false) // trigger false -> true { triggerPressed = true; e.axis = GetAxis( analogArray, WVR_InputId.WVR_InputId_Alias1_Trigger, WVR_AnalogType.WVR_AnalogType_1D, (int)analogArrayCount); OnTriggerClicked(e); } } if ((btnState & Input_Mask_Grip) != 0) { if (gripPressed == false) // grep false -> true { gripPressed = true; OnGripped(e); } } if ((btnState & Input_Mask_Touchpad) != 0) { if (padPressed == false) // touchpad false -> true { e.axis = GetAxis( analogArray, WVR_InputId.WVR_InputId_Alias1_Touchpad, WVR_AnalogType.WVR_AnalogType_2D, (int)analogArrayCount); padPressed = true; OnPadClicked(e); } } if ((btnState & Input_Mask_Menu) != 0) { if (menuPressed == false) // menu false -> true { menuPressed = true; OnMenuClicked(e); } } if ((btnState & Input_Mask_Hmd_Enter) != 0) { if (hmdEnterPressed == false) { hmdEnterPressed = true; OnHmdEnterClicked(e); } } } else { if (triggerPressed == true) { triggerPressed = false; OnTriggerUnclicked(e); } if (gripPressed == true) { gripPressed = false; OnUngripped(e); } if (padPressed == true) { padPressed = false; OnPadUnclicked(e); } if (menuPressed == true) { menuPressed = false; OnMenuUnclicked(e); } if (hmdEnterPressed == true) { hmdEnterPressed = false; OnHmdEnterUnclicked(e); } } // if (buttons != 0) /** * for Touch **/ e.flags = touches; if (touches != 0) { ulong touchState = (ulong)touches; //if (Log.FLAG_BUTTON) // Log.d (LOG_TAG, "_type: " + _type + " touchState: " + touchState); if ((touchState & Input_Mask_Touchpad) != 0) { if (padTouched == false) // touchpad false -> true { padTouched = true; e.axis = GetAxis( analogArray, WVR_InputId.WVR_InputId_Alias1_Touchpad, WVR_AnalogType.WVR_AnalogType_2D, (int)analogArrayCount); OnPadTouched(e); } } } else { if (padTouched == true) { padTouched = false; OnPadUntouched(e); } } // if (touches != 0) } else { Log.e(LOG_TAG, "_type: " + _type + " WVR_GetInputDeviceState failed!"); } // WVR_GetInputDeviceState } // Update
// Update is called once per frame void Update() { if (WaveVR.Instance == null) { return; } if (!WaveVR_Controller.Input(device).connected) { return; } uint buttons = 0, touches = 0; int analogArrayCount = Interop.WVR_GetInputTypeCount(device, WVR_InputType.WVR_InputType_Analog); WVR_AnalogState_t[] analogArray = new WVR_AnalogState_t[analogArrayCount]; if (Interop.WVR_GetInputDeviceState(device, inputMask, ref buttons, ref touches, analogArray, analogArrayCount)) { ClickedEventArgs e; e.device = device; e.flags = buttons; e.axis = Vector2.zero; /** * for Button **/ if (buttons != 0) { ulong btnState = (ulong)buttons; //if (Log.FLAG_BUTTON) // Log.d (LOG_TAG, "device: " + device + " btnState: " + btnState); if ((btnState & WaveVR_Controller.Device.Input_Mask_Trigger) != 0) { if (triggerPressed == false) // trigger false -> true { triggerPressed = true; e.axis = GetAxis( analogArray, WVR_InputId.WVR_InputId_Alias1_Trigger, WVR_AnalogType.WVR_AnalogType_Trigger, analogArrayCount); OnTriggerClicked(e); } } if ((btnState & WaveVR_Controller.Device.Input_Mask_Grip) != 0) { if (gripPressed == false) // grep false -> true { gripPressed = true; OnGripped(e); } } if ((btnState & WaveVR_Controller.Device.Input_Mask_Touchpad) != 0) { if (padPressed == false) // touchpad false -> true { e.axis = GetAxis( analogArray, WVR_InputId.WVR_InputId_Alias1_Touchpad, WVR_AnalogType.WVR_AnalogType_TouchPad, analogArrayCount); padPressed = true; OnPadClicked(e); } } if ((btnState & WaveVR_Controller.Device.Input_Mask_Menu) != 0) { if (menuPressed == false) // menu false -> true { menuPressed = true; OnMenuClicked(e); } } } else { if (triggerPressed == true) { triggerPressed = false; OnTriggerUnclicked(e); } if (gripPressed == true) { gripPressed = false; OnUngripped(e); } if (padPressed == true) { padPressed = false; OnPadUnclicked(e); } if (menuPressed == true) { menuPressed = false; OnMenuUnclicked(e); } } // if (buttons != 0) /** * for Touch **/ e.flags = touches; if (touches != 0) { ulong touchState = (ulong)touches; //if (Log.FLAG_BUTTON) // Log.d (LOG_TAG, "device: " + device + " touchState: " + touchState); if ((touchState & WaveVR_Controller.Device.Input_Mask_Touchpad) != 0) { if (padTouched == false) // touchpad false -> true { padTouched = true; e.axis = GetAxis( analogArray, WVR_InputId.WVR_InputId_Alias1_Touchpad, WVR_AnalogType.WVR_AnalogType_TouchPad, analogArrayCount); OnPadTouched(e); } } else { } } else { if (padTouched == true) { padTouched = false; OnPadUntouched(e); } } // if (touches != 0) } else { Log.e(LOG_TAG, "device: " + device + " WVR_GetInputDeviceState failed!"); } // WVR_GetInputDeviceState } // Update