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); } } }
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); }
public override void DrawSettings(BuildConfigSettings settings, SerializedProperty settingsSerializedProperty, float width) { base.DrawSettings(settings, settingsSerializedProperty, width); }