private void DrawSettingsButtons(BuildConfig.BuildConfig buildConfig, float currentViewWidth, List <Type> settingsToAdd) { int buttonWidth = (int)(currentViewWidth / 3.0f); for (int i = 0; i < settingsToAdd.Count; i += 3) { using (new EditorGUILayout.HorizontalScope()) { for (int j = 0; j < 3; j++) { int index = i + j; if (index >= settingsToAdd.Count) { break; } var settingsType = settingsToAdd[index]; string buttonName = settingsType.Name; if (buttonName.EndsWith("Settings")) { buttonName = buttonName.Replace("Settings", string.Empty); } if (GUILayout.Button(buttonName, GUILayout.Width(buttonWidth))) { buildConfig.Settings.Add(Activator.CreateInstance(settingsType) as BuildConfigSettings); } } } } }
private static string GetMenuItemName(BuildConfig buildConfig) { string menuItemName = "Tools/Lost/Configs/" + GetSafeBuildConfigName(buildConfig); // Removing the root config from the menu item path if we have more than one configs if (LostLibrary.BuildConfigs.BuildConfigs.Count > 1) { menuItemName = menuItemName.Replace(LostLibrary.BuildConfigs.RootBuildConfig.SafeName + "/", string.Empty); } return(menuItemName); }
private void DrawBuildConfigSettings(BuildConfig.BuildConfig buildConfig, BuildConfigSettings settings, SerializedProperty settingsSerializedProperty, bool isInherited, float currentViewWidth, out bool didDeleteSettings) { didDeleteSettings = false; bool foldoutVisible = true; Rect boxRect = new Rect(); var verticleHelper = settings.IsInline ? (IDisposable) new EditorGUILayout.HorizontalScope("box") : (IDisposable) new FoldoutScope(settings.DisplayName.GetHashCode(), settings.DisplayName, out foldoutVisible, out boxRect, false); using (verticleHelper) { float y = settings.IsInline ? (verticleHelper as EditorGUILayout.HorizontalScope).rect.y : boxRect.y; // Drawing the button float buttonSize = 14; float rightPadding = 25; float topPadding = 2; Rect buttonRect = new Rect(new Vector2(currentViewWidth - rightPadding, y + topPadding), new Vector2(buttonSize, buttonSize)); if (isInherited) { if (ButtonUtil.DrawAddButton(buttonRect)) { buildConfig.Settings.Add(Activator.CreateInstance(settings.GetType()) as BuildConfigSettings); } } else { if (ButtonUtil.DrawDeleteButton(buttonRect)) { buildConfig.Settings.Remove(settings); didDeleteSettings = true; return; } } // Breaking out if we're not suppose to show the foldout if (foldoutVisible == false) { return; } // Iterating and displaying all properties using (new EditorGUI.DisabledGroupScope(isInherited)) { float width = currentViewWidth - (settings.IsInline ? 60 : 15); settings.DrawSettings(settings, settingsSerializedProperty, width); } } }
public override BuildPlayerOptions ChangeBuildPlayerOptions(BuildConfig.BuildConfig buildConfig, BuildPlayerOptions options) { if (this.buildInStrictMode) { options.options |= BuildOptions.StrictMode; } else { options.options &= ~BuildOptions.StrictMode; } return(options); }
private static EditorBuildConfigs CreateEditorBuildConfigs() { string editorBuildConfigAssetPath = GetAssetPath(BuildConfigsAssetName); EditorBuildConfigs editorBuildConfigs; if (File.Exists(editorBuildConfigAssetPath) == false) { var rootConfig = new BuildConfig.BuildConfig(); rootConfig.Name = "Root"; AddSetting <BundleIdentifierSetting>(rootConfig); AddSetting <BootloaderSettings>(rootConfig); AddSetting <BuildPlayerContentSettings>(rootConfig); AddSetting <CloudBuildSetBuildNumber>(rootConfig); var devConfig = new BuildConfig.BuildConfig(); devConfig.Name = "Dev"; devConfig.IsDefault = true; devConfig.ParentId = rootConfig.Id; AddSetting <DevelopmentBuildSetting>(devConfig).IsDevelopmentBuild = true; AddSetting <PlayFabSettings>(devConfig).IsDevelopmentEnvironment = true; var liveConfig = new BuildConfig.BuildConfig(); liveConfig.Name = "Live"; liveConfig.ParentId = rootConfig.Id; AddSetting <DevelopmentBuildSetting>(liveConfig).IsDevelopmentBuild = false; AddSetting <PlayFabSettings>(liveConfig).IsDevelopmentEnvironment = false; // Creating the AppConfigs scriptable object editorBuildConfigs = ScriptableObject.CreateInstance <EditorBuildConfigs>(); editorBuildConfigs.BuildConfigs.Add(rootConfig); editorBuildConfigs.BuildConfigs.Add(devConfig); editorBuildConfigs.BuildConfigs.Add(liveConfig); CreateAsset(editorBuildConfigs, editorBuildConfigAssetPath); } else { editorBuildConfigs = AssetDatabase.LoadAssetAtPath <EditorBuildConfigs>(editorBuildConfigAssetPath); } return(editorBuildConfigs); T AddSetting <T>(BuildConfig.BuildConfig config) where T : BuildConfigSettings, new() { var newSettings = new T(); config.Settings.Add(newSettings); return(newSettings); } }
private static void GetActiveDefines(BuildConfig buildConfig, HashSet <string> defines) { if (buildConfig != null) { if (buildConfig.Defines != null) { foreach (var define in buildConfig.Defines) { defines.Add(define); } } GetActiveDefines(buildConfig.Parent, defines); } }
private void DrawBuildConfigSettings(BuildConfig.BuildConfig buildConfig, SerializedProperty settingsSerializedProperty, float currentViewWidth) { List <Type> settingsToAdd = new List <Type>(); foreach (var settingsType in BuildSettingsTypes) { BuildConfigSettings settings = buildConfig.GetSettings(settingsType, out bool isInherited); if (settings == null) { settingsToAdd.Add(settingsType); } else { // Checking if we should skip this if (isInherited && buildConfig.ShowInherited == false) { continue; } SerializedProperty currentSettings = null; for (int i = 0; i < settingsSerializedProperty.arraySize; i++) { var s = settingsSerializedProperty.GetArrayElementAtIndex(i); if (s.managedReferenceFullTypename.EndsWith(settingsType.FullName)) { currentSettings = s; } } this.DrawBuildConfigSettings(buildConfig, settings, currentSettings, isInherited, currentViewWidth, out bool didDeleteSettings); if (didDeleteSettings) { break; } } } EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.LabelField("Settings"); this.DrawSettingsButtons(buildConfig, currentViewWidth, settingsToAdd); }
private void DrawBuildConfig(BuildConfig.BuildConfig buildConfig, SerializedProperty buildConfigSerialiedProperty, float currentViewWidth) { buildConfig.ShowInherited = EditorGUILayout.Toggle("Show Inherited", buildConfig.ShowInherited); using (new EditorGUI.DisabledGroupScope(true)) { EditorGUILayout.TextField("Id", buildConfig.Id); } buildConfig.Name = EditorGUILayout.TextField("Name", buildConfig.Name); buildConfig.ParentId = EditorGUILayout.TextField("Parent Id", buildConfig.ParentId); EditorGUILayout.PropertyField(buildConfigSerialiedProperty.FindPropertyRelative("customDefines")); EditorGUILayout.Space(); EditorGUILayout.Space(); this.DrawBuildConfigSettings(buildConfig, buildConfigSerialiedProperty.FindPropertyRelative("settings"), currentViewWidth); if (GUI.changed) { EditorUtility.SetDirty(LostLibrary.BuildConfigs); } }
public override void GetRuntimeConfigSettings(BuildConfig.BuildConfig buildConfig, Dictionary <string, string> runtimeConfigSettings) { var settings = buildConfig.GetSettings <BootloaderSettings>(); if (settings == null) { return; } // Bootloader runtimeConfigSettings.Add(Bootloader.BootloaderLocation, ((int)settings.bootloaderLocation).ToString()); runtimeConfigSettings.Add(Bootloader.BootloaderPath, settings.bootloaderPath); // Managers runtimeConfigSettings.Add(Bootloader.BootloaderManagersLocation, ((int)settings.managersLocation).ToString()); runtimeConfigSettings.Add(Bootloader.BootloaderManagersPath, settings.managersPath); // Reboot runtimeConfigSettings.Add(Bootloader.BootloaderRebootSceneName, settings.rebootSceneName); // Ignoring runtimeConfigSettings.Add(Bootloader.BootloaderIgnoreSceneNames, settings.scenesToIgnore); }
private void OnGUI() { var buildConfigs = LostLibrary.BuildConfigs.BuildConfigs; float columnWidth = 150; float padding = 3; float leftSideX = padding; float leftSideY = padding; float leftSideWidth = columnWidth - (2 * padding); float leftSideHeight = this.position.height - (2 * padding); using (new GUILayout.AreaScope(new Rect(leftSideX, leftSideY, leftSideWidth, leftSideHeight))) { // https://forum.unity.com/threads/how-to-make-own-list-ui-in-editor-window.461428/ Color color_default = GUI.backgroundColor; Color color_selected = Color.gray; GUIStyle itemStyle = new GUIStyle(GUI.skin.button); itemStyle.alignment = TextAnchor.MiddleLeft; itemStyle.active.background = itemStyle.normal.background; itemStyle.margin = new RectOffset(0, 0, 0, 0); if (buildConfigs.IsNullOrEmpty() == false) { foreach (var buildConfig in buildConfigs.OrderBy(x => x.FullName)) { GUI.backgroundColor = (buildConfig == SelectedConfig) ? color_selected : Color.clear; StringBuilder depthString = new StringBuilder(); for (int i = 0; i < buildConfig.Depth * 4; i++) { depthString.Append(" "); } if (GUILayout.Button(depthString + buildConfig.Name, itemStyle)) { SelectedConfig = buildConfig; } GUI.backgroundColor = color_default; //this is to avoid affecting other GUIs outside of the list } } } float rightSideX = columnWidth + padding; float rightSideY = padding; float rightSideWidth = this.position.width - columnWidth - (2.0f * padding); float rightSideHeight = this.position.height - (2.0f * padding); using (new GUILayout.AreaScope(new Rect(rightSideX, rightSideY, rightSideWidth, rightSideHeight))) { SerializedObject editorBuildConfigsSO = new SerializedObject(LostLibrary.BuildConfigs); SerializedProperty buildConfigsSerializedProperty = editorBuildConfigsSO.FindProperty("buildConfigs"); SerializedProperty selectSerializedProperty = null; if (SelectedConfig != null) { for (int i = 0; i < buildConfigsSerializedProperty.arraySize; i++) { var element = buildConfigsSerializedProperty.GetArrayElementAtIndex(i); if (element.FindPropertyRelative("id").stringValue == SelectedConfig.Id) { selectSerializedProperty = element; break; } } using (new LabelWidthScope(220)) { this.DrawBuildConfig(SelectedConfig, selectSerializedProperty, rightSideWidth); } } } }
public virtual BuildPlayerOptions ChangeBuildPlayerOptions(BuildConfig buildConfig, BuildPlayerOptions options) { return(options); }
public virtual void GetRuntimeConfigSettings(BuildConfig buildConfig, Dictionary <string, string> runtimeConfigSettings) { }
private static string GetSafeBuildConfigName(BuildConfig buildConfig) { return(buildConfig.Parent != null? GetSafeBuildConfigName(buildConfig.Parent) + "/" + buildConfig.SafeName: buildConfig.SafeName); }