private void HandleHMDWearing() { EDeviceActivityLevel level = OpenVR.System.GetTrackedDeviceActivityLevel(0); switch (level) { case EDeviceActivityLevel.k_EDeviceActivityLevel_Unknown: case EDeviceActivityLevel.k_EDeviceActivityLevel_Idle: case EDeviceActivityLevel.k_EDeviceActivityLevel_Idle_Timeout: case EDeviceActivityLevel.k_EDeviceActivityLevel_Standby: if (!isWearingHeadset) { break; } isWearingHeadset = false; onHeadsetStateChanged.Invoke(false); break; case EDeviceActivityLevel.k_EDeviceActivityLevel_UserInteraction: if (isWearingHeadset) { break; } isWearingHeadset = true; onHeadsetStateChanged.Invoke(true); break; } }
// Update is called once per frame void Update() { EDeviceActivityLevel currentActivityLevel = getHeadActivityLevel(); //Debug.Log("cur actlev: " + currentActivityLevel); bool matchingActivityLevels = (oldActLevel == currentActivityLevel); if (!matchingActivityLevels && !didDeviceInactivityReset && currentActivityLevel == EDeviceActivityLevel.k_EDeviceActivityLevel_Standby) { reload(); didDeviceInactivityReset = true; Debug.Log("actlev: " + currentActivityLevel); Debug.Log("INACTIVITY RESET"); } else { didDeviceInactivityReset = false; } if (!matchingActivityLevels) { Debug.Log("(!matchingActivityLevels)s"); oldActLevel = currentActivityLevel; } KeyCode keyCode = KeyCode.R; if (Input.GetKeyDown(keyCode)) { reload(); } }
EDeviceActivityLevel getHeadActivityLevel() { CVRSystem cvrSystem = SteamVR.instance.hmd; EDeviceActivityLevel actlev = cvrSystem.GetTrackedDeviceActivityLevel(OpenVR.k_unTrackedDeviceIndex_Hmd); return(actlev); }
// Use this for initialization void Start() { oldActLevel = getHeadActivityLevel(); Debug.Log("oldActLevel: " + oldActLevel); curScene = SceneManager.GetActiveScene(); fog = GetComponent <fogAnimator>(); //EDeviceActivityLevel d = EDeviceActivityLevel; }