コード例 #1
0
        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();
            }
        }
コード例 #2
0
        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!");
                }
            }
        }
コード例 #3
0
        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);
                }
            }
        }
コード例 #4
0
        private void OnEnable()
        {
            var fileExists = Directory.Exists(BuildWindowConsts.ConfigFolderPath) || File.Exists(BuildWindowConsts.BuildWindowConfigPath);

            if (fileExists)
            {
                var json = File.ReadAllText(BuildWindowConsts.BuildWindowConfigPath);
                _windowConfig = JsonUtility.FromJson <BuildWindowConfig>(json);
                AssetDatabase.Refresh();
            }

            SetupFolderPaths();
            SetupPreviewScene();

            SetupMenuWindows();
        }
コード例 #5
0
        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();
            }
        }
コード例 #6
0
        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();
            }
        }
コード例 #7
0
        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();
        }
コード例 #8
0
        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();
            }
        }
コード例 #9
0
        private void OnEnable()
        {
            var fileExists = Directory.Exists(BuildWindowConsts.ConfigFolderPath) || File.Exists(BuildWindowConsts.BuildWindowConfigPath);

            if (fileExists)
            {
                if (File.Exists(BuildWindowConsts.BuildWindowConfigPath))
                {
                    var json = File.ReadAllText(BuildWindowConsts.BuildWindowConfigPath);
                    _windowConfig = JsonUtility.FromJson <BuildWindowConfig>(json);
                    AssetDatabase.Refresh();
                }
            }

            SetupFolderPaths();
            SetupPreviewScene();

            SetupMenuWindows();

            var activeWindow = BuildSettingLookup[_selectedMenu];

            activeWindow.OnEnabled();
        }
コード例 #10
0
        public void DrawSceneSelector(ref string scenePath, string name, BuildWindowConfig config)
        {
            EditorGUILayout.BeginHorizontal();
            {
                GUILayout.Label(name, GUILayout.Width(Size.x * 0.2F));

                if (AssetDatabase.LoadAssetAtPath(config.TargetScene, typeof(SceneAsset)) != null)
                {
                    _targetScene = (SceneAsset)AssetDatabase.LoadAssetAtPath(config.TargetScene, typeof(SceneAsset));
                }

                _targetScene = (SceneAsset)EditorGUILayout.ObjectField(_targetScene, typeof(SceneAsset), true, GUILayout.Width(Size.x * 0.75F));

                if (_targetScene != null)
                {
                    scenePath = AssetDatabase.GetAssetPath(_targetScene);
                }
                else
                {
                    _targetScene = AssetDatabase.LoadAssetAtPath <SceneAsset>(EditorSceneManager.GetActiveScene().path);
                }
            }
            EditorGUILayout.EndHorizontal();
        }
コード例 #11
0
 public abstract void Draw(BuildWindowConfig config);
コード例 #12
0
        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();
            }
        }
コード例 #13
0
        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();
            }
        }