using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; public class RenderSettingsWindow : EditorWindow { private static HashSet<IRenderSettingPreset> presets = new HashSet<IRenderSettingPreset>(); private static Dictionary<IRenderSettingPreset, bool> presetCollapsedDict = new Dictionary<IRenderSettingPreset, bool>(); private IRenderSettingPresetBuilder presetBuilder = new RenderSettingPresetBuilder(); private const bool isNotCollapsed = true; void OnGUI() { if (presets.Count == 0) { EditorGUILayout.LabelField("No presets available"); } else { foreach (IRenderSettingPreset preset in presets) { DrawPreset(preset); } } if(GUILayout.Button("Create new preset")) { IRenderSettingPreset preset = presetBuilder.Build("Preset_" + (presets.Count + 1)); presets.Add(preset); presetCollapsedDict.Add(preset, isNotCollapsed); Repaint(); } } private void DrawPreset(IRenderSettingPreset preset) { bool foldoutOpen = EditorGUILayout.Foldout(presetCollapsedDict[preset], preset.GetName(), EditorStyles.foldout); presetCollapsedDict[preset] = foldoutOpen; if (foldoutOpen) { DrawPresetSettings(preset); } } private void DrawPresetSettings(IRenderSettingPreset preset) { foreach (string child in preset.GetChildren()) { EditorGUILayout.LabelField(child); } if (GUILayout.Button("Add Visual Blueprint")) { preset.AddChild("Child_" + preset.GetChildren().Count); } } }