Пример #1
0
        private static void PackageListResponse()
        {
            bool oculusStandaloneInstalled = false;
            bool oculusAndroidInstalled    = false;
            bool unityxrmgmt = false;

            if (listResponse.IsCompleted)
            {
                EditorApplication.update -= PackageListResponse;

                foreach (var package in listResponse.Result)
                {
                    if (package.name == "com.unity.xr.oculus.standalone")
                    {
                        oculusStandaloneInstalled = true;
                    }
                    else if (package.name == "com.unity.xr.oculus.android")
                    {
                        oculusAndroidInstalled = true;
                    }
                    else if (package.name == "com.unity.xr.management")
                    {
                        unityxrmgmt = true;
                    }
                }

                if (unityxrmgmt)
                {
                    delResponse = UnityEditor.PackageManager.Client.Remove("com.unity.xr.management");
                    EditorApplication.update += PackageDelResponse;
                    return;
                }

                if (!oculusStandaloneInstalled && (settings.BuildForPC || settings.BuildForMac))
                {
                    addResponse = UnityEditor.PackageManager.Client.Add("com.unity.xr.oculus.standalone");
                    EditorApplication.update += PackageAddResponse;
                    return;
                }

                if (!oculusAndroidInstalled && settings.BuildForAndroid)
                {
                    addResponse = UnityEditor.PackageManager.Client.Add("com.unity.xr.oculus.android");
                    EditorApplication.update += PackageAddResponse;
                    return;
                }

                CheckXRSettings();
                CheckLayerSettings();
                Debug.Log("Player Settings adjusted for AltspaceVR build, we're good to go.");
            }
        }
Пример #2
0
        public static void MenuItem_UpdatePackage_Develop()
        {
            string t_name = "https://github.com/bluebackblue/UpmJsonItem.git?path=BlueBackJsonItem/Assets/UPM";

            UnityEditor.PackageManager.Requests.AddRequest t_request = UnityEditor.PackageManager.Client.Add(t_name);
            while (t_request.Status == UnityEditor.PackageManager.StatusCode.InProgress)
            {
                if (UnityEditor.EditorUtility.DisplayCancelableProgressBar(t_name, t_name, 1.0f) == true)
                {
                    break;
                }
                System.Threading.Thread.Sleep(1000);
            }
            UnityEditor.EditorUtility.ClearProgressBar();
        }
Пример #3
0
        public static void MenuItem_UpdatePackage_Last()
        {
            string t_version = GetLastReleaseNameFromGitHub();

            if (t_version != null)
            {
                string t_name = "https://github.com/bluebackblue/UpmAssetLib.git?path=BlueBackAssetLib/Assets/UPM#" + t_version;
                UnityEditor.PackageManager.Requests.AddRequest t_request = UnityEditor.PackageManager.Client.Add(t_name);
                while (t_request.Status == UnityEditor.PackageManager.StatusCode.InProgress)
                {
                    if (UnityEditor.EditorUtility.DisplayCancelableProgressBar(t_name, t_name, 1.0f) == true)
                    {
                        break;
                    }
                    System.Threading.Thread.Sleep(1000);
                }
                UnityEditor.EditorUtility.ClearProgressBar();
            }
        }
Пример #4
0
        public static void Update()
        {
            if (SteamVR_Settings.instance.autoEnableVR)
            {
                bool enabledVR = false;

                if (UnityEditor.PlayerSettings.virtualRealitySupported == false)
                {
                    UnityEditor.PlayerSettings.virtualRealitySupported = true;
                    enabledVR = true;
                    Debug.Log("<b>[SteamVR Setup]</b> Enabled virtual reality support in Player Settings. (you can disable this by unchecking Assets/SteamVR/SteamVR_Settings.autoEnableVR)");
                }

                UnityEditor.BuildTargetGroup currentTarget = UnityEditor.EditorUserBuildSettings.selectedBuildTargetGroup;

#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0)
                string[] devices = UnityEditorInternal.VR.VREditor.GetVREnabledDevices(currentTarget);
#else
                string[] devices = UnityEditorInternal.VR.VREditor.GetVREnabledDevicesOnTargetGroup(currentTarget);
#endif

                bool hasOpenVR = devices.Any(device => string.Equals(device, openVRString, System.StringComparison.CurrentCultureIgnoreCase));

                if (hasOpenVR == false || enabledVR)
                {
                    string[] newDevices;
                    if (enabledVR && hasOpenVR == false)
                    {
                        newDevices = new string[] { openVRString }; //only list openvr if we enabled it
                    }
                    else
                    {
                        List <string> devicesList = new List <string>(devices); //list openvr as the first option if it wasn't in the list.
                        if (hasOpenVR)
                        {
                            devicesList.Remove(openVRString);
                        }

                        devicesList.Insert(0, openVRString);
                        newDevices = devicesList.ToArray();
                    }

#if (UNITY_5_6 || UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0)
                    UnityEditorInternal.VR.VREditor.SetVREnabledDevices(currentTarget, newDevices);
#else
                    UnityEditorInternal.VR.VREditor.SetVREnabledDevicesOnTargetGroup(currentTarget, newDevices);
#endif
                    Debug.Log("<b>[SteamVR Setup]</b> Added OpenVR to supported VR SDKs list.");
                }

#if UNITY_2018_1_OR_NEWER
                //2018+ requires us to manually add the OpenVR package

                switch (packageState)
                {
                case PackageStates.None:
                    //see if we have the package
                    listRequest  = UnityEditor.PackageManager.Client.List(true);
                    packageState = PackageStates.WaitingForList;
                    break;

                case PackageStates.WaitingForList:
                    if (listRequest.IsCompleted)
                    {
                        if (listRequest.Error != null || listRequest.Status == UnityEditor.PackageManager.StatusCode.Failure)
                        {
                            packageState = PackageStates.Failed;
                            break;
                        }

                        bool hasPackage = listRequest.Result.Any(package => package.name == openVRPackageString);

                        if (hasPackage == false)
                        {
                            //if we don't have the package - then install it
                            addRequest   = UnityEditor.PackageManager.Client.Add(openVRPackageString);
                            packageState = PackageStates.WaitingForAdd;
                            addTryCount++;

                            Debug.Log("<b>[SteamVR Setup]</b> Installing OpenVR package...");
                            addingPackageTime.Start();
                            addingPackageTimeTotal.Start();
                        }
                        else
                        {
                            //if we do have the package do nothing
                            packageState = PackageStates.Installed;     //already installed
                        }
                    }
                    break;

                case PackageStates.WaitingForAdd:
                    if (addRequest.IsCompleted)
                    {
                        if (addRequest.Error != null || addRequest.Status == UnityEditor.PackageManager.StatusCode.Failure)
                        {
                            packageState = PackageStates.Failed;
                            break;
                        }
                        else
                        {
                            //if the package manager says we added it then confirm that with the list
                            listRequest  = UnityEditor.PackageManager.Client.List(true);
                            packageState = PackageStates.WaitingForAddConfirm;
                        }
                    }
                    else
                    {
                        if (addingPackageTimeTotal.Elapsed.TotalSeconds > estimatedTimeToInstall)
                        {
                            estimatedTimeToInstall *= 2;     // :)
                        }
                        string dialogText;
                        if (addTryCount == 1)
                        {
                            dialogText = "Installing OpenVR from Unity Package Manager...";
                        }
                        else
                        {
                            dialogText = "Retrying OpenVR install from Unity Package Manager...";
                        }

                        bool cancel = UnityEditor.EditorUtility.DisplayCancelableProgressBar("SteamVR", dialogText, (float)addingPackageTimeTotal.Elapsed.TotalSeconds / estimatedTimeToInstall);
                        if (cancel)
                        {
                            packageState = PackageStates.Failed;
                        }

                        if (addingPackageTime.Elapsed.TotalSeconds > 10)
                        {
                            Debug.Log("<b>[SteamVR Setup]</b> Waiting for package manager to install OpenVR package...");
                            addingPackageTime.Stop();
                            addingPackageTime.Reset();
                            addingPackageTime.Start();
                        }
                    }
                    break;

                case PackageStates.WaitingForAddConfirm:
                    if (listRequest.IsCompleted)
                    {
                        if (listRequest.Error != null)
                        {
                            packageState = PackageStates.Failed;
                            break;
                        }

                        bool hasPackage = listRequest.Result.Any(package => package.name == openVRPackageString);

                        if (hasPackage == false)
                        {
                            if (addTryCount == 1)
                            {
                                addRequest   = UnityEditor.PackageManager.Client.Add(openVRPackageString);
                                packageState = PackageStates.WaitingForAdd;
                                addTryCount++;

                                Debug.Log("<b>[SteamVR Setup]</b> Retrying OpenVR package install...");
                            }
                            else
                            {
                                packageState = PackageStates.Failed;
                            }
                        }
                        else
                        {
                            packageState = PackageStates.Installed;     //installed successfully

                            Debug.Log("<b>[SteamVR Setup]</b> Successfully installed OpenVR package.");
                        }
                    }
                    break;
                }

                if (packageState == PackageStates.Failed || packageState == PackageStates.Installed)
                {
                    addingPackageTime.Stop();
                    addingPackageTimeTotal.Stop();
                    UnityEditor.EditorUtility.ClearProgressBar();
                    UnityEditor.EditorApplication.update -= Update; //we're done trying to auto-enable vr

                    if (packageState == PackageStates.Failed)
                    {
                        string failtext = "The Unity Package Manager failed to automatically install the OpenVR package. Please open the Package Manager Window and try to install it manually.";
                        UnityEditor.EditorUtility.DisplayDialog("SteamVR", failtext, "Ok");
                        Debug.Log("<b>[SteamVR Setup]</b> " + failtext);
                    }
                }
#else
                UnityEditor.EditorApplication.update -= Update;
#endif
            }
        }
        public static void Update()
        {
            if (!SteamVR_Settings.instance.autoEnableVR || Application.isPlaying)
            {
                End();
            }

            if (UnityEditor.PlayerSettings.virtualRealitySupported == false)
            {
                if (forceInstall == false)
                {
                    int shouldInstall = UnityEditor.EditorUtility.DisplayDialogComplex("SteamVR", "Would you like to enable Virtual Reality mode?\n\nThis will install the OpenVR for Desktop package and enable it in Player Settings.", "Yes", "No, and don't ask again", "No");

                    switch (shouldInstall)
                    {
                    case 0:     //yes
                        UnityEditor.PlayerSettings.virtualRealitySupported = true;
                        break;

                    case 1:     //no
                        End();
                        return;

                    case 2:     //no, don't ask
                        SteamVR_Settings.instance.autoEnableVR = false;
                        SteamVR_Settings.Save();
                        End();
                        return;
                    }
                }

                Debug.Log("<b>[SteamVR Setup]</b> Enabled virtual reality support in Player Settings. (you can disable this by unchecking Assets/SteamVR/SteamVR_Settings.autoEnableVR)");
            }

            switch (updateState)
            {
            case PackageStates.None:
                //see if we have the package
                listRequest = UnityEditor.PackageManager.Client.List(true);
                updateState = PackageStates.WaitingForList;
                break;

            case PackageStates.WaitingForList:
                if (listRequest == null)
                {
                    listRequest = UnityEditor.PackageManager.Client.List(true);
                    updateState = PackageStates.WaitingForList;
                }
                else if (listRequest.IsCompleted)
                {
                    if (listRequest.Error != null || listRequest.Status == UnityEditor.PackageManager.StatusCode.Failure)
                    {
                        updateState = PackageStates.Failed;
                        break;
                    }

                    string packageName = unityOpenVRPackageString;

                    bool hasPackage = listRequest.Result.Any(package => package.name == packageName);

                    if (hasPackage == false)
                    {
                        //if we don't have the package - then install it
                        addRequest  = UnityEditor.PackageManager.Client.Add(packageName);
                        updateState = PackageStates.WaitingForAdd;
                        addTryCount++;

                        Debug.Log("<b>[SteamVR Setup]</b> Installing OpenVR package...");
                        addingPackageTime.Start();
                        addingPackageTimeTotal.Start();
                    }
                    else
                    {
                        //if we do have the package, make sure it's enabled.
                        updateState = PackageStates.Installed;     //already installed
                    }
                }
                break;

            case PackageStates.WaitingForAdd:
                if (addRequest.IsCompleted)
                {
                    if (addRequest.Error != null || addRequest.Status == UnityEditor.PackageManager.StatusCode.Failure)
                    {
                        updateState = PackageStates.Failed;
                        break;
                    }
                    else
                    {
                        //if the package manager says we added it then confirm that with the list
                        listRequest = UnityEditor.PackageManager.Client.List(true);
                        updateState = PackageStates.WaitingForAddConfirm;
                    }
                }
                else
                {
                    if (addingPackageTimeTotal.Elapsed.TotalSeconds > estimatedTimeToInstall)
                    {
                        if (addTryCount == 1)
                        {
                            estimatedTimeToInstall *= 2;     //give us more time to retry
                        }
                        else
                        {
                            updateState = PackageStates.Failed;
                        }
                    }

                    string dialogText;
                    if (addTryCount == 1)
                    {
                        dialogText = "Installing OpenVR from Unity Package Manager...";
                    }
                    else
                    {
                        dialogText = "Retrying OpenVR install from Unity Package Manager...";
                    }

                    bool cancel = UnityEditor.EditorUtility.DisplayCancelableProgressBar("SteamVR", dialogText, (float)addingPackageTimeTotal.Elapsed.TotalSeconds / estimatedTimeToInstall);
                    if (cancel)
                    {
                        updateState = PackageStates.Failed;
                    }

                    if (addingPackageTime.Elapsed.TotalSeconds > 10)
                    {
                        Debug.Log("<b>[SteamVR Setup]</b> Waiting for package manager to install OpenVR package...");
                        addingPackageTime.Stop();
                        addingPackageTime.Reset();
                        addingPackageTime.Start();
                    }
                }
                break;

            case PackageStates.WaitingForAddConfirm:
                if (listRequest.IsCompleted)
                {
                    if (listRequest.Error != null)
                    {
                        updateState = PackageStates.Failed;
                        break;
                    }
                    string packageName = unityOpenVRPackageString;

                    bool hasPackage = listRequest.Result.Any(package => package.name == packageName);

                    if (hasPackage == false)
                    {
                        if (addTryCount == 1)
                        {
                            addRequest  = UnityEditor.PackageManager.Client.Add(packageName);
                            updateState = PackageStates.WaitingForAdd;
                            addTryCount++;

                            Debug.Log("<b>[SteamVR Setup]</b> Retrying OpenVR package install...");
                        }
                        else
                        {
                            updateState = PackageStates.Failed;
                        }
                    }
                    else
                    {
                        updateState = PackageStates.Installed;     //installed successfully

                        Debug.Log("<b>[SteamVR Setup]</b> Successfully installed OpenVR Desktop package.");
                    }
                }
                break;

            case PackageStates.Installed:
                UnityEditor.BuildTargetGroup currentTarget = UnityEditor.EditorUserBuildSettings.selectedBuildTargetGroup;

                string[] devices = UnityEditorInternal.VR.VREditor.GetVREnabledDevicesOnTargetGroup(currentTarget);

                bool hasOpenVR = false;
                bool isFirst   = false;

                if (devices.Length != 0)
                {
                    int index = Array.FindIndex(devices, device => string.Equals(device, openVRString, System.StringComparison.CurrentCultureIgnoreCase));
                    hasOpenVR = index != -1;
                    isFirst   = index == 0;
                }

                //list openvr as the first option if it was in the list already
                List <string> devicesList = new List <string>(devices);
                if (isFirst == false)
                {
                    if (hasOpenVR == true)
                    {
                        devicesList.Remove(openVRString);
                    }

                    devicesList.Insert(0, openVRString);
                    string[] newDevices = devicesList.ToArray();

                    UnityEditorInternal.VR.VREditor.SetVREnabledDevicesOnTargetGroup(currentTarget, newDevices);
                    Debug.Log("<b>[SteamVR Setup]</b> Added OpenVR to supported VR SDKs list.");
                }

                End();
                break;

            case PackageStates.Failed:
                End();

                string failtext = "The Unity Package Manager failed to automatically install the OpenVR Desktop package. Please open the Package Manager Window and try to install it manually.";
                UnityEditor.EditorUtility.DisplayDialog("SteamVR", failtext, "Ok");
                Debug.Log("<b>[SteamVR Setup]</b> " + failtext);
                break;
            }
        }
Пример #6
0
        public static void Update()
        {
            if (SteamVR_Settings.instance.autoEnableVR)
            {
                bool enabledVR = false;

#if UNITY_2020_1_OR_NEWER || OPENVR_XR_API
#if !UNITY_2020_2_OR_NEWER
                if (UnityEditor.PlayerSettings.virtualRealitySupported == true)
                {
                    UnityEditor.PlayerSettings.virtualRealitySupported = false;
                    enabledVR = true;
                    Debug.Log("<b>[SteamVR Setup]</b> Disabled virtual reality support in Player Settings. <b>Because you're using XR Manager. Make sure OpenVR Loader is enabled in XR Manager UI.</b> (you can disable this by unchecking Assets/SteamVR/SteamVR_Settings.autoEnableVR)");
                }
#endif

#if OPENVR_XR_API
                //little hacky, but the public methods weren't working.

                if (isLoaderAssignedMethodParameters == null)
                {
                    isLoaderAssignedMethodParameters = new Type[] { typeof(string), typeof(BuildTargetGroup) }
                }
                ;
                if (isLoaderAssignedCallParameters == null)
                {
                    isLoaderAssignedCallParameters = new object[] { valveOpenVRLoaderType, BuildTargetGroup.Standalone }
                }
                ;
                if (isLoaderAssigned == null)
                {
                    isLoaderAssigned = GetMethod("IsLoaderAssigned", isLoaderAssignedMethodParameters);
                }

                if (installPackageAndAssignLoaderForBuildTarget == null)
                {
                    installPackageAndAssignLoaderForBuildTarget = GetMethod("InstallPackageAndAssignLoaderForBuildTarget");
                }

                if (isLoaderAssigned != null && installPackageAndAssignLoaderForBuildTarget != null)
                {
                    bool isAssigned = (bool)isLoaderAssigned.Invoke(null, isLoaderAssignedCallParameters);

                    if (isAssigned == false)
                    {
                        if (enabledLoaderKey == null)
                        {
                            enabledLoaderKey = string.Format(valveEnabledLoaderKeyTemplate, SteamVR_Settings.instance.editorAppKey);
                        }

                        if (EditorPrefs.HasKey(enabledLoaderKey) == false)
                        {
                            installPackageAndAssignLoaderForBuildTarget.Invoke(null, new object[] { valveOpenVRPackageString, valveOpenVRLoaderType, BuildTargetGroup.Standalone });

                            isAssigned = (bool)isLoaderAssigned.Invoke(null, isLoaderAssignedCallParameters);
                            if (isAssigned)
                            {
                                EditorPrefs.SetBool(enabledLoaderKey, true);

                                Debug.Log("<b>[SteamVR Setup]</b> Enabled OpenVR Loader in XR Management");
                                UnityEditor.EditorApplication.update -= Update;
                            }
                        }
                        else
                        {
                            UnityEditor.EditorApplication.update -= Update;
                        }
                    }
                    else
                    {
                        UnityEditor.EditorApplication.update -= Update;
                    }
                }
#elif UNITY_2020_1_OR_NEWER
                StartAutoUpdater();
#endif
#else
                if (UnityEditor.PlayerSettings.virtualRealitySupported == false)
                {
                    UnityEditor.PlayerSettings.virtualRealitySupported = true;
                    enabledVR = true;
                    Debug.Log("<b>[SteamVR Setup]</b> Enabled virtual reality support in Player Settings. (you can disable this by unchecking Assets/SteamVR/SteamVR_Settings.autoEnableVR)");
                }

                UnityEditor.BuildTargetGroup currentTarget = UnityEditor.EditorUserBuildSettings.selectedBuildTargetGroup;

#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0)
                string[] devices = UnityEditorInternal.VR.VREditor.GetVREnabledDevices(currentTarget);
#else
                string[] devices = UnityEditorInternal.VR.VREditor.GetVREnabledDevicesOnTargetGroup(currentTarget);
#endif

                bool hasOpenVR = devices.Any(device => string.Equals(device, openVRString, System.StringComparison.CurrentCultureIgnoreCase));

                if (hasOpenVR == false || enabledVR)
                {
                    string[] newDevices;
                    if (enabledVR && hasOpenVR == false)
                    {
                        newDevices = new string[] { openVRString }; //only list openvr if we enabled it
                    }
                    else
                    {
                        List <string> devicesList = new List <string>(devices); //list openvr as the first option if it wasn't in the list.
                        if (hasOpenVR)
                        {
                            devicesList.Remove(openVRString);
                        }

                        devicesList.Insert(0, openVRString);
                        newDevices = devicesList.ToArray();
                    }

#if (UNITY_5_6 || UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0)
                    UnityEditorInternal.VR.VREditor.SetVREnabledDevices(currentTarget, newDevices);
#else
                    UnityEditorInternal.VR.VREditor.SetVREnabledDevicesOnTargetGroup(currentTarget, newDevices);
#endif
                    Debug.Log("<b>[SteamVR Setup]</b> Added OpenVR to supported VR SDKs list.");
                }

#if UNITY_2018_2_OR_NEWER
                //2018+ requires us to manually add the OpenVR package
                //2020.1+ has a separate script that does installs

                switch (packageState)
                {
                case PackageStates.None:
                    //see if we have the package
                    listRequest  = UnityEditor.PackageManager.Client.List(true);
                    packageState = PackageStates.WaitingForList;
                    break;

                case PackageStates.WaitingForList:
                    if (listRequest.IsCompleted)
                    {
                        if (listRequest.Error != null || listRequest.Status == UnityEditor.PackageManager.StatusCode.Failure)
                        {
                            packageState = PackageStates.Failed;
                            break;
                        }

                        string packageName = null;

                        packageName = unityOpenVRPackageString;

                        bool hasPackage = listRequest.Result.Any(package => package.name == packageName);

                        if (hasPackage == false)
                        {
                            //if we don't have the package - then install it
                            addRequest   = UnityEditor.PackageManager.Client.Add(packageName);
                            packageState = PackageStates.WaitingForAdd;
                            addTryCount++;

                            Debug.Log("<b>[SteamVR Setup]</b> Installing OpenVR package...");
                            addingPackageTime.Start();
                            addingPackageTimeTotal.Start();
                        }
                        else
                        {
                            //if we do have the package, do nothing
                            packageState = PackageStates.Installed;     //already installed
                        }
                    }
                    break;

                case PackageStates.WaitingForAdd:
                    if (addRequest.IsCompleted)
                    {
                        if (addRequest.Error != null || addRequest.Status == UnityEditor.PackageManager.StatusCode.Failure)
                        {
                            packageState = PackageStates.Failed;
                            break;
                        }
                        else
                        {
                            //if the package manager says we added it then confirm that with the list
                            listRequest  = UnityEditor.PackageManager.Client.List(true);
                            packageState = PackageStates.WaitingForAddConfirm;
                        }
                    }
                    else
                    {
                        if (addingPackageTimeTotal.Elapsed.TotalSeconds > estimatedTimeToInstall)
                        {
                            estimatedTimeToInstall *= 2;     // :)
                        }
                        string dialogText;
                        if (addTryCount == 1)
                        {
                            dialogText = "Installing OpenVR from Unity Package Manager...";
                        }
                        else
                        {
                            dialogText = "Retrying OpenVR install from Unity Package Manager...";
                        }

                        bool cancel = UnityEditor.EditorUtility.DisplayCancelableProgressBar("SteamVR", dialogText, (float)addingPackageTimeTotal.Elapsed.TotalSeconds / estimatedTimeToInstall);
                        if (cancel)
                        {
                            packageState = PackageStates.Failed;
                        }

                        if (addingPackageTime.Elapsed.TotalSeconds > 10)
                        {
                            Debug.Log("<b>[SteamVR Setup]</b> Waiting for package manager to install OpenVR package...");
                            addingPackageTime.Stop();
                            addingPackageTime.Reset();
                            addingPackageTime.Start();
                        }
                    }
                    break;

                case PackageStates.WaitingForAddConfirm:
                    if (listRequest.IsCompleted)
                    {
                        if (listRequest.Error != null)
                        {
                            packageState = PackageStates.Failed;
                            break;
                        }
                        string packageName = unityOpenVRPackageString;

                        bool hasPackage = listRequest.Result.Any(package => package.name == packageName);

                        if (hasPackage == false)
                        {
                            if (addTryCount == 1)
                            {
                                addRequest   = UnityEditor.PackageManager.Client.Add(packageName);
                                packageState = PackageStates.WaitingForAdd;
                                addTryCount++;

                                Debug.Log("<b>[SteamVR Setup]</b> Retrying OpenVR package install...");
                            }
                            else
                            {
                                packageState = PackageStates.Failed;
                            }
                        }
                        else
                        {
                            packageState = PackageStates.Installed;     //installed successfully

                            Debug.Log("<b>[SteamVR Setup]</b> Successfully installed OpenVR package.");
                        }
                    }
                    break;
                }

                if (packageState == PackageStates.Failed || packageState == PackageStates.Installed)
                {
                    addingPackageTime.Stop();
                    addingPackageTimeTotal.Stop();
                    UnityEditor.EditorUtility.ClearProgressBar();
                    UnityEditor.EditorApplication.update -= Update; //we're done trying to auto-enable vr

                    if (packageState == PackageStates.Failed)
                    {
                        string failtext = "The Unity Package Manager failed to automatically install the OpenVR package. Please open the Package Manager Window and try to install it manually.";
                        UnityEditor.EditorUtility.DisplayDialog("SteamVR", failtext, "Ok");
                        Debug.Log("<b>[SteamVR Setup]</b> " + failtext);
                    }
                }
#else
                UnityEditor.EditorApplication.update -= Update;
#endif
#endif
            }
        }