123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- //======= Copyright (c) Valve Corporation, All rights reserved. ===============
- //
- // Purpose: Prompt developers to use settings most compatible with SteamVR.
- //
- //=============================================================================
- #if (UNITY_5_4_OR_NEWER && !UNITY_2018_1_OR_NEWER)
- using UnityEngine;
- using UnityEditor;
- using System.IO;
- using System.Collections.Generic;
- using System.Linq;
- using System;
- using System.Reflection;
- using UnityEditor.Callbacks;
- namespace Valve.VR
- {
- public class SteamVR_AutoEnableVR_54to2018
- {
- [DidReloadScripts]
- private static void OnReload()
- {
- EditorApplication.update += Update;
- }
- protected const string openVRString = "OpenVR";
- private static void End()
- {
- EditorApplication.update -= Update;
- }
- public static void Update()
- {
- if (!SteamVR_Settings.instance.autoEnableVR || Application.isPlaying)
- End();
-
- bool enabledVR = false;
- int shouldInstall = -1;
- if (UnityEditor.PlayerSettings.virtualRealitySupported == false)
- {
- shouldInstall = UnityEditor.EditorUtility.DisplayDialogComplex("SteamVR", "Would you like to enable Virtual Reality mode?\n\nThis will enable Virtual Reality in Player Settings and add OpenVR as a target.", "Yes", "No, and don't ask again", "No");
- switch (shouldInstall)
- {
- case 0: //yes
- UnityEditor.PlayerSettings.virtualRealitySupported = true;
- break;
- case 1: //no:
- UnityEditor.EditorApplication.update -= Update;
- return;
- case 2: //no, don't ask
- SteamVR_Settings.instance.autoEnableVR = false;
- SteamVR_Settings.Save();
- UnityEditor.EditorApplication.update -= Update;
- return;
- }
- }
- UnityEditor.BuildTargetGroup currentTarget = UnityEditor.EditorUserBuildSettings.selectedBuildTargetGroup;
- #if UNITY_5_6_OR_NEWER
- string[] devices = UnityEditorInternal.VR.VREditor.GetVREnabledDevicesOnTargetGroup(currentTarget);
- #else
- string[] devices = UnityEditorInternal.VR.VREditor.GetVREnabledDevices(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();
- }
- int shouldEnable = -1;
- if (shouldInstall == 0)
- shouldEnable = 0;
- else
- shouldEnable = UnityEditor.EditorUtility.DisplayDialogComplex("SteamVR", "Would you like to enable OpenVR as a VR target?", "Yes", "No, and don't ask again", "No");
- switch (shouldEnable)
- {
- case 0: //yes
- #if UNITY_5_6_OR_NEWER
- UnityEditorInternal.VR.VREditor.SetVREnabledDevicesOnTargetGroup(currentTarget, newDevices);
- #else
- UnityEditorInternal.VR.VREditor.SetVREnabledDevices(currentTarget, newDevices);
- #endif
- Debug.Log("<b>[SteamVR Setup]</b> Added OpenVR to supported VR SDKs list.");
- break;
- case 1: //no:
- break;
- case 2: //no, don't ask
- SteamVR_Settings.instance.autoEnableVR = false;
- SteamVR_Settings.Save();
- break;
- }
- }
- UnityEditor.EditorApplication.update -= Update;
- }
- }
- }
- #endif
|