public static bool IsSettingsAvailable() { return(File.Exists(BuilderSettings.GetSettingFilePath())); }
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(); } }
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. */ }
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. */ }