public override void Draw(BuildWindowConfig config) { var appManifest = AppTools.GetAppManifest; var appManifestAsset = AppTools.GetAppManifestAsset; EditorGUILayout.BeginVertical("Box"); { EditorGUIHelper.DrawTitle("Publishing Settings"); EditorGUILayout.LabelField( "The App Manifest is how we identify your experiences from other experiences"); _id = EditorGUILayout.IntField("ID", _id); _version = EditorGUILayout.IntField("Version", _version); GUILayout.FlexibleSpace(); EditorGUILayout.BeginHorizontal(); { appManifestAsset = (TextAsset)EditorGUILayout.ObjectField(appManifestAsset, typeof(TextAsset), true); if (GUILayout.Button("Update Manifest")) { if (EnsureManifestFolderExists()) { AppTools.CreateAppManifest(_id, _version); } EditorGUIUtility.PingObject(appManifestAsset); } EditorGUILayout.EndHorizontal(); } EditorGUILayout.EndVertical(); } }
public override void Draw(BuildWindowConfig config) { EditorGUILayout.BeginVertical("Box"); { EditorGUIHelper.DrawTitle("Experience Settings"); EditorGUILayout.LabelField("This page is used to set the various settings of the experience"); EditorGUILayout.TextArea("", GUI.skin.horizontalSlider); GetConfig(); if (_limappConfig == null) { GUILayout.FlexibleSpace(); if (GUILayout.Button("Create New Config File")) { CreateConfig(); } return; } DrawFields(_limappConfig, "Limapp Config"); GUILayout.FlexibleSpace(); if (GUILayout.Button("Update Config From Project Settings")) { _limappConfig.SaveProjectSettings(); Debug.Log("Config Updated!"); } } }
public override void Draw(BuildWindowConfig config) { EditorGUIHelper.DrawTitle("App Preview"); GUILayout.Label("The Preview Scene will load and run your limapp created from the Build Tool"); GUILayout.Space(EditorGUIUtility.singleLineHeight); if (CanDraw) { GUILayout.Label("Select Limapp"); _appPreviewConfig = _previewApp.PreviewConfig; DrawLimappSelection(ref _appPreviewConfig.EmulatorPath, "Emulator"); DrawLimappSelection(ref _appPreviewConfig.AndroidPath, "Android"); CopyAndroidAppToStreamingAssets(); EditorUtility.SetDirty(_previewApp.PreviewConfig); GUILayout.FlexibleSpace(); GUILayout.BeginHorizontal(); { if (EditorApplication.isPlaying) { if (GUILayout.Button(EditorGUIUtility.IconContent("PauseButton"))) { _previewApp.Stop(); } if (GUILayout.Button(EditorGUIUtility.IconContent("PlayButton"))) { _previewApp.Play(); } } else { if (!string.IsNullOrEmpty(config.PreviousScene)) { if (GUILayout.Button("Back")) { EditorSceneManager.OpenScene(config.PreviousScene, OpenSceneMode.Single); } } if (GUILayout.Button("Play")) { EditorApplication.isPlaying = true; } } } GUILayout.EndHorizontal(); } else { GUILayout.FlexibleSpace(); if (GUILayout.Button("Open Preview Scene")) { config.PreviousScene = EditorSceneManager.GetActiveScene().path; EditorSceneManager.OpenScene(BuildWindowConsts.PreviewAppScenePath, OpenSceneMode.Single); } } }
public override void Draw(BuildWindowConfig config) { GUILayout.Label( "In order to build for the Liminal Platform, you need to set up the app scene" + "\nCurrently, we only support 1 Scene"); EditorGUIHelper.DrawTitle("Scene Setup"); GUILayout.Label("1. Open the scene you want to build" + "\n2. Click Setup App Scene"); GUILayout.FlexibleSpace(); if (GUILayout.Button("Setup Scene")) { AppTools.SetupAppScene(); } }
public override void Draw(BuildWindowConfig config) { GUILayout.BeginVertical("Box"); { EditorGUIHelper.DrawTitle("Scene Setup"); GUILayout.Label( "In order to build for the Liminal Platform, you need to set up the app scene" + "\nCurrently, we only support 1 Scene", EditorStyles.boldLabel); GUILayout.Space(4); GUILayout.Label("Setting Up", EditorStyles.boldLabel); var guiStyle = new GUIStyle(EditorStyles.label) { richText = true, wordWrap = true, clipping = TextClipping.Overflow }; GUILayout.Label("<b><size=17>1.</size></b> Click <b>[Generate Scripts]</b> which will provide you with methods to override basic implementation such as Pause, Resume and how the app ends.", guiStyle); GUILayout.Space(2); GUILayout.Label("<b><size=17>2.</size></b> Open the scene you want to create your experience in.", guiStyle); GUILayout.Space(2); GUILayout.Label("<b><size=17>3.</size></b> Click <b>[Setup Scene]</b> which will setup the scene to work with the Limapp system. When it comes time to build, only things under the [ExperienceApp] object will be included.", guiStyle); GUILayout.FlexibleSpace(); GUILayout.BeginHorizontal(); using (new EditorGUI.DisabledScope(_generated)) { if (GUILayout.Button("Generate Scripts")) { AppTools.GenerateScripts(); } } using (new EditorGUI.DisabledScope(!_generated)) { if (GUILayout.Button("Setup Scene")) { AppTools.SetupAppScene(); } } GUILayout.EndHorizontal(); GUILayout.EndVertical(); } }
public override void Draw(BuildWindowConfig config) { EditorGUIHelper.DrawTitle("Experience Settings"); EditorGUILayout.LabelField("This page is used to set the various settings of the experience"); EditorGUILayout.TextArea("", GUI.skin.horizontalSlider); GUILayout.Space(10); var experienceApp = GameObject.FindObjectOfType <ExperienceApp>(); if (experienceApp == null) { EditorGUILayout.LabelField("Please open the scene you wish to edit the settings of."); return; } var app = UnityEditor.Editor.CreateEditor(experienceApp); app.DrawDefaultInspector(); }
public override void Draw(BuildWindowConfig config) { EditorGUILayout.BeginVertical("Box"); { EditorGUIHelper.DrawTitle("Issue Resolution"); EditorGUILayout.LabelField("This window will help you identify and resolve known issues and edge cases"); EditorGUILayout.TextArea("", GUI.skin.horizontalSlider); GetSceneGameObjects(); GUILayout.Space(10); _scrollPos = EditorGUILayout.BeginScrollView(_scrollPos); EditorStyles.label.wordWrap = true; EditorPrefs.SetBool("HasBuildIssues", false); DisplayUnityEditorTab(); DisplayForbiddenCalls(); CheckIncompatibility(); CheckTagsAndLayers(); CheckDefaultParameters(); DisplayRenderingTab(); DisplayVRAvatarTab(); EditorGUILayout.EndScrollView(); GUILayout.Space(EditorGUIUtility.singleLineHeight); GUILayout.FlexibleSpace(); EditorGUILayout.TextArea("", GUI.skin.horizontalSlider); if (GUILayout.Button("View Wiki")) { Application.OpenURL("https://github.com/LiminalVR/DeveloperWiki/wiki/Requirements-&-Optimisation"); } GUILayout.Space(EditorGUIUtility.singleLineHeight); EditorGUILayout.EndVertical(); } }
public override void Draw(BuildWindowConfig config) { EditorGUILayout.BeginVertical("Box"); { EditorGUIHelper.DrawTitle("Build Limapp"); EditorGUILayout.LabelField("This process will build a limapp file that will run on the Liminal Platform"); EditorGUILayout.TextArea("", GUI.skin.horizontalSlider); GUILayout.Space(10); DrawSceneSelector(ref _scenePath, "Target Scene", config); config.TargetScene = _scenePath; EditorGUILayout.Space(); _selectedPlatform = config.SelectedPlatform; _selectedPlatform = (BuildPlatform)EditorGUILayout.EnumPopup("Select Platform", _selectedPlatform); config.SelectedPlatform = _selectedPlatform; _compressionType = config.CompressionType; _compressionType = (ECompressionType)EditorGUILayout.EnumPopup("Compression Format", _compressionType); config.CompressionType = _compressionType; if (_compressionType == ECompressionType.Uncompressed) { EditorGUILayout.LabelField("Uncompressed limapps are not valid for release.", EditorStyles.boldLabel); } GUILayout.Space(EditorGUIUtility.singleLineHeight); EditorGUILayout.LabelField("Additional References"); EditorGUI.indentLevel++; var toRemove = new List <string>(); foreach (var reference in config.AdditionalReferences) { GUILayout.BeginHorizontal(); { EditorGUILayout.LabelField(reference); if (GUILayout.Button("X")) { toRemove.Add(reference); } } GUILayout.EndHorizontal(); } foreach (var reference in toRemove) { config.AdditionalReferences.Remove(reference); } GUILayout.BeginHorizontal(); { _referenceInput = EditorGUILayout.TextField("Reference: ", _referenceInput); if (GUILayout.Button("+")) { if (string.IsNullOrEmpty(_referenceInput)) { return; } if (config.DefaultAdditionalReferences.Contains(_referenceInput)) { Debug.Log($"The default references already included {_referenceInput}"); return; } var refAsm = Assembly.Load(_referenceInput); if (refAsm == null) { Debug.LogError($"Assembly: {_referenceInput} does not exist."); return; } if (!config.AdditionalReferences.Contains(_referenceInput)) { config.AdditionalReferences.Add(_referenceInput); } _referenceInput = ""; } } GUILayout.EndHorizontal(); EditorGUI.indentLevel--; GUILayout.FlexibleSpace(); var enabled = !_scenePath.Equals(string.Empty); if (!enabled) { GUILayout.Label("Scene cannot be empty", "CN StatusWarn"); } GUI.enabled = !EditorApplication.isCompiling; if (GUILayout.Button("Build")) { //run checks here. IssuesUtility.CheckForAllIssues(); var hasBuildIssues = EditorPrefs.GetBool("HasBuildIssues"); if (hasBuildIssues) { if (EditorUtility.DisplayDialog("Build Issues Detected", "Outstanding issues have been detected in your project. " + "Navigate to Build Settings->Issues for help resolving them", "Build Anyway", "Cancel Build")) { Build(); } } else { Build(); } } EditorGUILayout.EndVertical(); } }
public override void Draw(BuildWindowConfig config) { EditorGUILayout.BeginVertical("Box"); { EditorGUIHelper.DrawTitle("Build Limapp"); EditorGUILayout.LabelField("This process will build a limapp file that will run on the Liminal Platform"); EditorGUILayout.TextArea("", GUI.skin.horizontalSlider); DrawSceneSelector(ref _scenePath, "Target Scene", config); config.TargetScene = _scenePath; EditorGUILayout.Space(); _selectedPlatform = config.SelectedPlatform; _selectedPlatform = (BuildPlatform)EditorGUILayout.EnumPopup("Select Platform", _selectedPlatform); config.SelectedPlatform = _selectedPlatform; _compressionType = config.CompressionType; _compressionType = (ECompressionType)EditorGUILayout.EnumPopup("Compression Format", _compressionType); config.CompressionType = _compressionType; if (_compressionType == ECompressionType.Uncompressed) { EditorGUILayout.LabelField("Uncompressed limapps are not valid for release.", EditorStyles.boldLabel); } GUILayout.Space(EditorGUIUtility.singleLineHeight); EditorGUILayout.LabelField("Additional References"); EditorGUI.indentLevel++; var toRemove = new List <string>(); foreach (var reference in config.AdditionalReferences) { GUILayout.BeginHorizontal(); { EditorGUILayout.LabelField(reference); if (GUILayout.Button("X")) { toRemove.Add(reference); } } GUILayout.EndHorizontal(); } foreach (var reference in toRemove) { config.AdditionalReferences.Remove(reference); } GUILayout.BeginHorizontal(); { _referenceInput = EditorGUILayout.TextField("Reference: ", _referenceInput); if (GUILayout.Button("+")) { if (string.IsNullOrEmpty(_referenceInput)) { return; } if (config.DefaultAdditionalReferences.Contains(_referenceInput)) { Debug.Log($"The default references already included {_referenceInput}"); return; } var refAsm = Assembly.Load(_referenceInput); if (refAsm == null) { Debug.LogError($"Assembly: {_referenceInput} does not exist."); return; } if (!config.AdditionalReferences.Contains(_referenceInput)) { config.AdditionalReferences.Add(_referenceInput); } _referenceInput = ""; } } GUILayout.EndHorizontal(); EditorGUI.indentLevel--; GUILayout.FlexibleSpace(); GUI.enabled = !_scenePath.Equals(string.Empty); if (GUILayout.Button("Build")) { EditorSceneManager.OpenScene(_scenePath, OpenSceneMode.Single); switch (_selectedPlatform) { case BuildPlatform.Current: AppBuilder.BuildCurrentPlatform(); break; case BuildPlatform.GearVR: AppBuilder.BuildLimapp(BuildTarget.Android, AppBuildInfo.BuildTargetDevices.GearVR, _compressionType); break; case BuildPlatform.Standalone: AppBuilder.BuildLimapp(BuildTarget.StandaloneWindows, AppBuildInfo.BuildTargetDevices.Emulator, _compressionType); break; } } EditorGUILayout.EndVertical(); } }