public void OnGUI() { #if UNITY_2017_1_OR_NEWER if (EditorApplication.isCompiling) { EditorGUILayout.LabelField("Compiling..."); return; } #endif if (viuLogo == null) { var currentDir = Path.GetDirectoryName(AssetDatabase.GetAssetPath(MonoScript.FromScriptableObject(this))); var texturePath = currentDir.Substring(0, currentDir.Length - "Scripts/Editor".Length) + "Textures/VIU_logo.png"; viuLogo = AssetDatabase.LoadAssetAtPath <Texture2D>(texturePath); } if (viuLogo != null) { GUI.DrawTexture(GUILayoutUtility.GetRect(position.width, 124, GUI.skin.box), viuLogo, ScaleMode.ScaleToFit); } if (showNewVersion) { EditorGUILayout.HelpBox("New version available:", MessageType.Warning); GUILayout.Label("Current version: " + VIUVersion.current); GUILayout.Label("New version: " + latestVersion); if (!string.IsNullOrEmpty(latestRepoInfo.body)) { GUILayout.Label("Release notes:"); releaseNoteScrollPosition = GUILayout.BeginScrollView(releaseNoteScrollPosition, GUILayout.Height(250f)); EditorGUILayout.HelpBox(latestRepoInfo.body, MessageType.None); GUILayout.EndScrollView(); } GUILayout.BeginHorizontal(); { if (GUILayout.Button(new GUIContent("Get Latest Version", "Goto " + pluginUrl))) { Application.OpenURL(pluginUrl); } GUILayout.FlexibleSpace(); toggleSkipThisVersion = GUILayout.Toggle(toggleSkipThisVersion, "Do not prompt for this version again."); } GUILayout.EndHorizontal(); } UpdateIgnoredNotifiedSettingsCount(true); if (notifiedSettingsCount > 0) { GUILayout.EndScrollView(); if (ignoredSettingsCount > 0) { if (GUILayout.Button("Clear All Ignores(" + ignoredSettingsCount + ")")) { foreach (var setting in s_settings) { setting.DeleteIgnore(); } } } GUILayout.BeginHorizontal(); { if (GUILayout.Button("Accept All(" + notifiedSettingsCount + ")")) { for (int i = 10; i >= 0 && notifiedSettingsCount > 0; --i) { foreach (var setting in s_settings) { if (!setting.SkipCheck() && !setting.IsIgnored()) { setting.AcceptRecommendValue(); } } VIUSettingsEditor.ApplySDKChanges(); UpdateIgnoredNotifiedSettingsCount(false); } } if (GUILayout.Button("Ignore All(" + notifiedSettingsCount + ")")) { foreach (var setting in s_settings) { if (!setting.SkipCheck() && !setting.IsIgnored() && !setting.IsUsingRecommendedValue()) { setting.DoIgnore(); } } } } GUILayout.EndHorizontal(); } else if (shouldNotifiedSettingsCount > 0) { EditorGUILayout.HelpBox("Some recommended settings ignored.", MessageType.Warning); GUILayout.FlexibleSpace(); if (GUILayout.Button("Clear All Ignores(" + ignoredSettingsCount + ")")) { foreach (var setting in s_settings) { setting.DeleteIgnore(); } } } else { EditorGUILayout.HelpBox("All recommended settings applied.", MessageType.Info); GUILayout.FlexibleSpace(); } VIUSettingsEditor.ApplySDKChanges(); if (VIUProjectSettings.hasChanged) { // save ignore keys VIUProjectSettings.Save(); } if (GUILayout.Button("Close")) { Close(); } }
public OpenVRRecommendedSettings() { Add(new VIUVersionCheck.RecommendedSetting <bool>() { settingTitle = "Virtual Reality Supported with OpenVR", skipCheckFunc = () => !VIUSettingsEditor.canSupportOpenVR, currentValueFunc = () => VIUSettingsEditor.supportOpenVR, setValueFunc = v => VIUSettingsEditor.supportOpenVR = v, recommendedValue = true, }); Add(new VIUVersionCheck.RecommendedSetting <BuildTarget>() { settingTitle = "Build Target", skipCheckFunc = () => VRModule.isSteamVRPluginDetected || VIUSettingsEditor.activeBuildTargetGroup != BuildTargetGroup.Standalone, currentValueFunc = () => EditorUserBuildSettings.activeBuildTarget, setValueFunc = v => { #if UNITY_2017_1_OR_NEWER EditorUserBuildSettings.SwitchActiveBuildTargetAsync(BuildTargetGroup.Standalone, v); #elif UNITY_5_6_OR_NEWER EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.Standalone, v); #else EditorUserBuildSettings.SwitchActiveBuildTarget(v); #endif }, recommendedValue = BuildTarget.StandaloneWindows64, }); Add(new VIUVersionCheck.RecommendedSetting <bool>() { settingTitle = "Load Binding Config on Start", skipCheckFunc = () => !VIUSettingsEditor.supportOpenVR, toolTip = "You can change this option later in Edit -> Preferences... -> VIU Settings.", currentValueFunc = () => VIUSettings.autoLoadBindingConfigOnStart, setValueFunc = v => { VIUSettings.autoLoadBindingConfigOnStart = v; }, recommendedValue = true, }); Add(new VIUVersionCheck.RecommendedSetting <bool>() { settingTitle = "Binding Interface Switch", skipCheckFunc = () => !VIUSettingsEditor.supportOpenVR, toolTip = VIUSettings.BIND_UI_SWITCH_TOOLTIP + " You can change this option later in Edit -> Preferences... -> VIU Settings.", currentValueFunc = () => VIUSettings.enableBindingInterfaceSwitch, setValueFunc = v => { VIUSettings.enableBindingInterfaceSwitch = v; }, recommendedValue = true, }); Add(new VIUVersionCheck.RecommendedSetting <bool>() { settingTitle = "External Camera Switch", skipCheckFunc = () => !VRModule.isSteamVRPluginDetected || !VIUSettingsEditor.supportOpenVR, toolTip = VIUSettings.EX_CAM_UI_SWITCH_TOOLTIP + " You can change this option later in Edit -> Preferences... -> VIU Settings.", currentValueFunc = () => VIUSettings.enableExternalCameraSwitch, setValueFunc = v => { VIUSettings.enableExternalCameraSwitch = v; }, recommendedValue = true, }); #if UNITY_5_3 Add(new VIUVersionCheck.RecommendedSetting <bool>() { settingTitle = "Stereoscopic Rendering", skipCheckFunc = () => VRModule.isSteamVRPluginDetected || !VIUSettingsEditor.supportAnyVR, currentValueFunc = () => PlayerSettings.stereoscopic3D, setValueFunc = v => PlayerSettings.stereoscopic3D = v, recommendedValue = false, }); #endif #if UNITY_5_3 || UNITY_5_4 Add(new VIUVersionCheck.RecommendedSetting <RenderingPath>() { settingTitle = "Rendering Path", skipCheckFunc = () => VRModule.isSteamVRPluginDetected || !VIUSettingsEditor.supportAnyVR, recommendBtnPostfix = "required for MSAA", currentValueFunc = () => PlayerSettings.renderingPath, setValueFunc = v => PlayerSettings.renderingPath = v, recommendedValue = RenderingPath.Forward, }); // Unity 5.3 doesn't have SplashScreen for VR Add(new VIUVersionCheck.RecommendedSetting <bool>() { settingTitle = "Show Unity Splash Screen", skipCheckFunc = () => VRModule.isSteamVRPluginDetected || !InternalEditorUtility.HasPro() || !VIUSettingsEditor.supportAnyVR, currentValueFunc = () => PlayerSettings.showUnitySplashScreen, setValueFunc = v => PlayerSettings.showUnitySplashScreen = v, recommendedValue = false, }); #endif Add(new VIUVersionCheck.RecommendedSetting <bool>() { settingTitle = "GPU Skinning", skipCheckFunc = () => VRModule.isSteamVRPluginDetected || !VIUSettingsEditor.supportAnyVR, currentValueFunc = () => PlayerSettings.gpuSkinning, setValueFunc = v => { if (VIUSettingsEditor.supportAnyAndroidVR) { VIUSettingsEditor.SetGraphicsAPI(BuildTarget.Android, GraphicsDeviceType.OpenGLES3); } PlayerSettings.gpuSkinning = v; }, recommendedValueFunc = () => !VIUSettingsEditor.supportWaveVR, }); Add(new VIUVersionCheck.RecommendedSetting <Vector2>() { settingTitle = "Default Screen Size", skipCheckFunc = () => VRModule.isSteamVRPluginDetected || !VIUSettingsEditor.supportAnyStandaloneVR, currentValueFunc = () => new Vector2(PlayerSettings.defaultScreenWidth, PlayerSettings.defaultScreenHeight), setValueFunc = v => { PlayerSettings.defaultScreenWidth = (int)v.x; PlayerSettings.defaultScreenHeight = (int)v.y; }, recommendedValue = new Vector2(1024f, 768f), }); Add(new VIUVersionCheck.RecommendedSetting <bool>() { settingTitle = "Run In Background", skipCheckFunc = () => VRModule.isSteamVRPluginDetected || !VIUSettingsEditor.supportAnyStandaloneVR, currentValueFunc = () => PlayerSettings.runInBackground, setValueFunc = v => PlayerSettings.runInBackground = v, recommendedValue = true, }); #if !UNITY_2019_2_OR_NEWER Add(new VIUVersionCheck.RecommendedSetting <ResolutionDialogSetting>() { settingTitle = "Display Resolution Dialog", skipCheckFunc = () => VRModule.isSteamVRPluginDetected || !VIUSettingsEditor.supportAnyStandaloneVR, currentValueFunc = () => PlayerSettings.displayResolutionDialog, setValueFunc = v => PlayerSettings.displayResolutionDialog = v, recommendedValue = ResolutionDialogSetting.HiddenByDefault, }); #endif Add(new VIUVersionCheck.RecommendedSetting <bool>() { settingTitle = "Resizable Window", skipCheckFunc = () => VRModule.isSteamVRPluginDetected || !VIUSettingsEditor.supportAnyStandaloneVR, currentValueFunc = () => PlayerSettings.resizableWindow, setValueFunc = v => PlayerSettings.resizableWindow = v, recommendedValue = true, }); #if !UNITY_2018_1_OR_NEWER Add(new VIUVersionCheck.RecommendedSetting <bool>() { settingTitle = "Default Is Fullscreen", skipCheckFunc = () => VRModule.isSteamVRPluginDetected || !VIUSettingsEditor.supportAnyStandaloneVR, currentValueFunc = () => PlayerSettings.defaultIsFullScreen, setValueFunc = v => PlayerSettings.defaultIsFullScreen = v, recommendedValue = false, }); Add(new VIUVersionCheck.RecommendedSetting <D3D11FullscreenMode>() { settingTitle = "D3D11 Fullscreen Mode", skipCheckFunc = () => VRModule.isSteamVRPluginDetected || !VIUSettingsEditor.supportAnyStandaloneVR, currentValueFunc = () => PlayerSettings.d3d11FullscreenMode, setValueFunc = v => PlayerSettings.d3d11FullscreenMode = v, recommendedValue = D3D11FullscreenMode.FullscreenWindow, }); #else Add(new VIUVersionCheck.RecommendedSetting <FullScreenMode>() { settingTitle = "Fullscreen Mode", skipCheckFunc = () => VRModule.isSteamVRPluginDetected || !VIUSettingsEditor.supportAnyStandaloneVR, currentValueFunc = () => PlayerSettings.fullScreenMode, setValueFunc = v => PlayerSettings.fullScreenMode = v, recommendedValue = FullScreenMode.FullScreenWindow, }); #endif Add(new VIUVersionCheck.RecommendedSetting <bool>() { settingTitle = "Visible In Background", skipCheckFunc = () => VRModule.isSteamVRPluginDetected || !VIUSettingsEditor.supportAnyStandaloneVR, currentValueFunc = () => PlayerSettings.visibleInBackground, setValueFunc = v => PlayerSettings.visibleInBackground = v, recommendedValue = true, }); Add(new VIUVersionCheck.RecommendedSetting <ColorSpace>() { settingTitle = "Color Space", skipCheckFunc = () => (VRModule.isSteamVRPluginDetected && VIUSettingsEditor.activeBuildTargetGroup == BuildTargetGroup.Standalone) || !VIUSettingsEditor.supportAnyVR, recommendBtnPostfix = "requires reloading scene", currentValueFunc = () => PlayerSettings.colorSpace, setValueFunc = v => { if (VIUSettingsEditor.supportAnyAndroidVR) { VIUSettingsEditor.SetGraphicsAPI(BuildTarget.Android, GraphicsDeviceType.OpenGLES3); } PlayerSettings.colorSpace = v; }, recommendedValue = ColorSpace.Linear, }); #if VIU_STEAMVR_2_0_0_OR_NEWER Add(new RecommendedSteamVRInputFileSettings()); #endif }