private IEnumerator DoInitializeSteamVR(bool forceUnityVRToOpenVR = false) { XRSettings.LoadDeviceByName(openVRDeviceName); yield return(null); EnableOpenVR(); }
private IEnumerator DoInitializeSteamVR(bool forceUnityVRToOpenVR = false) { XRDevice.deviceLoaded += XRDevice_deviceLoaded; XRSettings.LoadDeviceByName(openVRDeviceName); while (loadedOpenVRDeviceSuccess == false) { yield return(null); } XRDevice.deviceLoaded -= XRDevice_deviceLoaded; EnableOpenVR(); }
/// <summary> /// Make sure OpenVR is loaded. /// </summary> /// <returns>The coroutine enumerator</returns> internal static IEnumerator LoadOpenVR() { var newVRDevice = "OpenVR"; if (string.Compare(XRSettings.loadedDeviceName, newVRDevice, true) != 0) { XRSettings.LoadDeviceByName(newVRDevice); yield return(null); XRSettings.enabled = true; Debug.Log("Enabled XR settings for " + newVRDevice); } }
/// <summary> /// Unloads the currently loaded VRTK_SDKSetup, if there is one. /// </summary> /// <param name="disableVR">Whether to disable VR altogether after unloading the SDK Setup.</param> public void UnloadSDKSetup(bool disableVR = false) { if (loadedSetup != null) { ToggleBehaviours(false); } VRTK_SDKSetup previousLoadedSetup = loadedSetup; loadedSetup = null; if (previousLoadedSetup != null) { previousLoadedSetup.OnUnloaded(this); } if (disableVR) { XRSettings.LoadDeviceByName("None"); XRSettings.enabled = false; } if (previousLoadedSetup != null) { OnLoadedSetupChanged(new LoadedSetupChangeEventArgs(previousLoadedSetup, null, null)); } _previouslyUsedSetupInfos.Clear(); if (previousLoadedSetup != null) { _previouslyUsedSetupInfos.UnionWith( new[] { previousLoadedSetup.systemSDKInfo, previousLoadedSetup.boundariesSDKInfo, previousLoadedSetup.headsetSDKInfo, previousLoadedSetup.controllerSDKInfo } ); } }
/// <summary> /// Tries to load a valid VRTK_SDKSetup from a list. /// </summary> /// <remarks> /// The first loadable VRTK_SDKSetup in the list will be loaded. Will fall back to disable VR if none of the provided Setups is useable. /// </remarks> /// <param name="startIndex">The index of the VRTK_SDKSetup to start the loading with.</param> /// <param name="tryToReinitialize">Whether or not to retry initializing and using the currently set but unusable VR Device.</param> /// <param name="sdkSetups">The list to try to load a VRTK_SDKSetup from.</param> public void TryLoadSDKSetup(int startIndex, bool tryToReinitialize, params VRTK_SDKSetup[] sdkSetups) { if (sdkSetups.Length == 0) { return; } if (startIndex < 0 || startIndex >= sdkSetups.Length) { VRTK_Logger.Fatal(new ArgumentOutOfRangeException("startIndex")); return; } sdkSetups = sdkSetups.ToList() .GetRange(startIndex, sdkSetups.Length - startIndex) .ToArray(); foreach (VRTK_SDKSetup invalidSetup in sdkSetups.Where(setup => !setup.isValid)) { string setupErrorDescriptions = string.Join("\n- ", invalidSetup.GetSimplifiedErrorDescriptions()); if (!string.IsNullOrEmpty(setupErrorDescriptions)) { setupErrorDescriptions = "- " + setupErrorDescriptions; VRTK_Logger.Warn(string.Format("Ignoring SDK Setup '{0}' because there are some errors with it:\n{1}", invalidSetup.name, setupErrorDescriptions)); } } sdkSetups = sdkSetups.Where(setup => setup.isValid).ToArray(); VRTK_SDKSetup previousLoadedSetup = loadedSetup; ToggleBehaviours(false); loadedSetup = null; if (previousLoadedSetup != null) { previousLoadedSetup.OnUnloaded(this); } string loadedDeviceName = string.IsNullOrEmpty(XRSettings.loadedDeviceName) ? "None" : XRSettings.loadedDeviceName; bool isDeviceAlreadyLoaded = sdkSetups[0].usedVRDeviceNames.Contains(loadedDeviceName); if (!isDeviceAlreadyLoaded) { if (!tryToReinitialize && !XRSettings.enabled && loadedDeviceName != "None") { sdkSetups = sdkSetups.Where(setup => !setup.usedVRDeviceNames.Contains(loadedDeviceName)) .ToArray(); } VRTK_SDKSetup[] missingVRDeviceSetups = sdkSetups .Where(setup => setup.usedVRDeviceNames.Except(XRSettings.supportedDevices.Concat(new[] { "None" })).Any()) .ToArray(); foreach (VRTK_SDKSetup missingVRDeviceSetup in missingVRDeviceSetups) { string missingVRDevicesText = string.Join( ", ", missingVRDeviceSetup.usedVRDeviceNames .Except(XRSettings.supportedDevices) .ToArray() ); VRTK_Logger.Warn(string.Format("Ignoring SDK Setup '{0}' because the following VR device names are missing from the PlayerSettings:\n{1}", missingVRDeviceSetup.name, missingVRDevicesText)); } sdkSetups = sdkSetups.Except(missingVRDeviceSetups).ToArray(); string[] vrDeviceNames = sdkSetups .SelectMany(setup => setup.usedVRDeviceNames) .Distinct() .Concat(new[] { "None" }) // Add "None" to the end to fall back to .ToArray(); XRSettings.LoadDeviceByName(vrDeviceNames); } StartCoroutine(FinishSDKSetupLoading(sdkSetups, previousLoadedSetup)); }