Newer
Older
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);
}