Пример #1
0
 public static bool IsSettingsAvailable()
 {
     return(File.Exists(BuilderSettings.GetSettingFilePath()));
 }
Пример #2
0
        private void DisplayTargetView()
        {
            BuilderSettings settings = (BuilderSettings)m_BuilderConfigSettings.targetObject;

            if (m_configurations.arraySize == 0)
            {
                EditorGUILayout.LabelField("", GUI.skin.horizontalSlider);
                GUILayout.BeginArea(new Rect(0, 0, Screen.width, Screen.height));
                GUILayout.FlexibleSpace();
                GUILayout.BeginVertical();
                GUILayout.BeginHorizontal();

                GUILayout.FlexibleSpace();
                GUILayout.Label("Start Build Configuration by Creating a Target.");

                if (GUILayout.Button(Styles.addFirstTarget))
                {
                    /*	Add default instance.	*/
                    int index = m_configurations.arraySize;
                    m_configurations.InsertArrayElementAtIndex(index);

                    m_BuilderConfigSettings.ApplyModifiedProperties();

                    /*	Set the default value.	*/
                    settings.targets[index]       = new BuildTarget();
                    settings.targets[index].title = PlayerSettings.productName;
                    settings.targets[index].name  = string.Format("Target {0}", index);
                    m_BuilderConfigSettings.ApplyModifiedPropertiesWithoutUndo();
                    m_BuilderConfigSettings.Update();

                    if (m_configurations.arraySize == 1)
                    {
                        selectedConfigIndex = 0;
                    }
                }
                GUILayout.FlexibleSpace();
                GUILayout.EndHorizontal();
                GUILayout.EndVertical();

                GUILayout.FlexibleSpace();
                GUILayout.EndArea();
            }
            else
            {
                /*	*/
                EditorGUILayout.LabelField("Target Settings", EditorStyles.boldLabel);
                EditorGUILayout.BeginHorizontal("Box");

                DisplayLeftBuildTargets();

                //GUILayout.FlexibleSpace();

                /*  */
                if (m_configurations.arraySize > 0)
                {
                    EditorGUILayout.BeginVertical("GroupBox",
                                                  GUILayout.MinHeight(600), GUILayout.MaxHeight(EditorGUI.GetPropertyHeight(m_configurations, true))); //TODO add height from property.
                    EditorGUILayout.LabelField("");

                    /*	Displace the build target if selected and is a valid index.	*/
                    if (m_configurations.arraySize > 0)
                    {
                        if (selectedConfigIndex >= 0 && selectedConfigIndex < m_configurations.arraySize)
                        {
                            /*	Draw main build target property.	*/
                            EditorGUILayout.PropertyField(m_configurations.GetArrayElementAtIndex(selectedConfigIndex), GUIContent.none, true);

                            using (new EditorGUI.IndentLevelScope(3))
                            {
                                EditorGUILayout.BeginHorizontal();
                                EditorGUILayout.Space();

                                EditorGUI.BeginDisabledGroup(settings.targets[selectedConfigIndex].useDefaultScenes);
                                if (GUILayout.Button(Styles.SetDefaultScenes, GUILayout.MaxWidth(120)))
                                {
                                    SerializedProperty         scenes    = m_BuilderConfigSettings.FindProperty("scenes");
                                    EditorBuildSettingsScene[] defScenes = Builder.getDefaultScenes();
                                    settings.targets[selectedConfigIndex].scenes = new SceneAsset[defScenes.Length];
                                    for (int i = 0; i < defScenes.Length; i++)
                                    {
                                        settings.targets[selectedConfigIndex].scenes[i] = AssetDatabase.LoadAssetAtPath <SceneAsset>(defScenes[i].path);
                                    }
                                }
                                if (GUILayout.Button(Styles.ClearScenes, GUILayout.MaxWidth(120)))
                                {
                                    SerializedProperty scenes = m_configurations.GetArrayElementAtIndex(selectedConfigIndex).FindPropertyRelative("scenes");
                                    scenes.ClearArray();
                                    //
                                }
                                EditorGUI.EndDisabledGroup();
                                EditorGUILayout.EndHorizontal();

                                /*	Draw build buttons.	*/
                                BuildTarget optionItem        = BuilderSettings.GetOrCreateSettings().targets[selectedConfigIndex];
                                bool        isTargetSupported = Builder.isBuildTargetSupported(optionItem);
                                if (!isTargetSupported)
                                {
                                    EditorGUILayout.LabelField("Target Group and Target is not valid configuration", this.errorStyle);
                                }

                                EditorGUILayout.BeginHorizontal();
                                EditorGUI.BeginDisabledGroup(!isTargetSupported);
                                if (GUILayout.Button(Styles.build, GUILayout.MaxWidth(120)))
                                {
                                    Builder.BuildTarget(optionItem);
                                }
                                if (GUILayout.Button(Styles.buildScript, GUILayout.MaxWidth(120)))
                                {
                                    Builder.BuildTargetScriptOnly(optionItem);
                                }
                                EditorGUI.EndDisabledGroup();
                                EditorGUILayout.EndHorizontal();

                                try
                                {
                                    string outputPathLabel = string.Format("Executable filepath: {0}", Builder.GetTargetLocationAbsolutePath(optionItem), EditorStyles.boldLabel);
                                    EditorGUILayout.LabelField(outputPathLabel);
                                }
                                catch (Exception ex)
                                {
                                    Color currentColor = EditorStyles.label.normal.textColor;
                                    EditorStyles.label.normal.textColor = Color.red;
                                    EditorGUILayout.LabelField(string.Format("Invalid setttings: {0}.", ex.Message));
                                    EditorStyles.label.normal.textColor = currentColor;
                                }
                            }
                        }
                    }

                    EditorGUILayout.EndVertical();
                }

                EditorGUILayout.EndHorizontal();


                EditorGUILayout.Separator();
            }
        }
Пример #3
0
        public override void OnGUI(string searchContext)
        {
            m_BuilderConfigSettings.Update();
            BuilderSettings settings = (BuilderSettings)m_BuilderConfigSettings.targetObject;

            using (new EditorGUI.IndentLevelScope(1))
            {
                /*	*/
                this.scroll = EditorGUILayout.BeginScrollView(scroll, false, true);

                /*	*/
                DisplayGUIHeader();

                EditorGUILayout.Space();

                tab = GUILayout.Toolbar(tab, new GUIContent[] { Styles.TargetTab, Styles.RunTargets });
                switch (tab)
                {
                default:
                case 0:
                    DisplayTargetView();
                    break;

                case 1:
                    DisplayRunable();
                    break;
                }

                EditorGUILayout.EndScrollView();

                /*	Summary information.	*/
                EditorGUILayout.BeginVertical();
                EditorGUILayout.Space();
                EditorGUILayout.LabelField(string.Format("Number of targets: {0}", settings.targets.Length.ToString()));
                EditorGUILayout.LabelField(string.Format("Number of enabled build targets: {0}", GetNrEnabledTargets()));


                /*	Check if any has invalid.	*/
                int nbadpath    = 0;
                int ntargetpath = 0;
                foreach (BuildTarget target in settings.targets)
                {
                    if (!Builder.isBuildTargetSupported(target))
                    {
                        ntargetpath++;
                    }
                    if (Builder.validateTargetPath(target))
                    {
                        nbadpath++;
                    }
                }
                if (nbadpath > 0)
                {
                    EditorGUILayout.LabelField(string.Format("Number of invalid path targets: {0}", nbadpath));
                }
                if (ntargetpath > 0)
                {
                    EditorGUILayout.LabelField(string.Format("Number of invalid target configuratons: {0}", ntargetpath));
                }


                EditorGUILayout.BeginHorizontal();

                EditorGUI.BeginDisabledGroup(m_configurations.arraySize == 0);
                /*	Build all buttons.	*/
                if (GUILayout.Button(Styles.buildTargets))
                {
                    Builder.BuildFromConfig((BuilderSettings)settings);
                }
                if (GUILayout.Button(Styles.buildTargetsScriptOnly))
                {
                    Builder.BuildFromConfigScriptOnly((BuilderSettings)settings);
                }


                /*	Export and import buttons.	*/
                const string ext = "asset";
                if (GUILayout.Button(Styles.export))
                {
                    /*	Export.	*/
                    string path = EditorUtility.SaveFilePanel("Choose export file path", Directory.GetCurrentDirectory(), string.Format("{0}", Application.productName), ext);
                    /*	*/
                    if (path.Length != 0)
                    {
                        try
                        {
                            BuilderIO.SaveConfigSetting(path);
                        }
                        catch (Exception ex)
                        {
                            EditorUtility.DisplayDialog("Error when exporting the settings", ex.Message, "Ok");
                        }
                        finally
                        {
                        }
                    }
                }
                EditorGUI.EndDisabledGroup();
                if (GUILayout.Button(Styles.import))
                {
                    /*	Import.	*/
                    string path = EditorUtility.OpenFilePanel("Choose import file path", Directory.GetCurrentDirectory(), ext);
                    /*	*/
                    if (path.Length != 0)
                    {
                        try
                        {
                            BuilderIO.LoadConfigSetting(path);
                        }
                        catch (Exception ex)
                        {
                            EditorUtility.DisplayDialog("Error when importing settings", ex.Message, "Ok");
                        }
                        finally
                        {
                        }
                    }
                }
                EditorGUILayout.EndHorizontal();
                EditorGUILayout.EndVertical();
                m_BuilderConfigSettings.ApplyModifiedProperties();
            }               /*	Reset indent.	*/
        }
Пример #4
0
        private void DisplayLeftBuildTargets()
        {
            /*	Begin the vertical left view for adding, selecting and removing build targets.	*/
            EditorGUILayout.BeginVertical(GUILayout.MaxWidth(230.0f), GUILayout.ExpandHeight(true));

            EditorGUILayout.BeginHorizontal(GUILayout.MaxWidth(350.0f), GUILayout.MinWidth(280.0f));
            if (GUILayout.Button(Styles.add))
            {
                /*	Add default instance.	*/
                int index = m_configurations.arraySize;
                m_configurations.InsertArrayElementAtIndex(index);

                m_BuilderConfigSettings.ApplyModifiedProperties();

                /*	Set the default value.	*/
                BuilderSettings settings = (BuilderSettings)m_BuilderConfigSettings.targetObject;
                settings.targets[index]       = new BuildTarget();
                settings.targets[index].title = PlayerSettings.productName;
                settings.targets[index].name  = string.Format("Target {0}", index);
                m_BuilderConfigSettings.ApplyModifiedPropertiesWithoutUndo();
                m_BuilderConfigSettings.Update();

                if (m_configurations.arraySize == 1)
                {
                    selectedConfigIndex = 0;
                }
            }

            /*	Determine if any valid item is currently selected.	*/
            bool isItemSelected = selectedConfigIndex >= 0 && selectedConfigIndex < m_configurations.arraySize;

            EditorGUI.BeginDisabledGroup(!isItemSelected);
            if (GUILayout.Button(Styles.addCopy))
            {
                /*	Add default instance.	*/
                int index = m_configurations.arraySize;
                /*	Add copy based on the current selected index.	*/
                m_configurations.InsertArrayElementAtIndex(index);
                m_BuilderConfigSettings.ApplyModifiedProperties();

                BuilderSettings settings = (BuilderSettings)m_BuilderConfigSettings.targetObject;
                BuildTarget     selected = settings.targets[selectedConfigIndex];
                settings.targets[index] = (BuildTarget)selected.Clone();

                m_BuilderConfigSettings.ApplyModifiedPropertiesWithoutUndo();
                m_BuilderConfigSettings.Update();
            }

            if (GUILayout.Button(Styles.remove))
            {
                /*	Add copy based on tehcurrent selected.	*/
                m_configurations.DeleteArrayElementAtIndex(selectedConfigIndex);
                selectedConfigIndex = selectedConfigIndex - 1;
                //TODO update the index.
                //m_list. = selectedConfigIndex;
            }
            EditorGUI.EndDisabledGroup();

            EditorGUILayout.EndHorizontal();

            /*	*/
            EditorGUILayout.Separator();
            m_list.DoLayoutList();

            EditorGUILayout.EndVertical();
            /*	End	the vertical left view for adding, selecting and removing build targets.	*/
        }