Skip to content
Snippets Groups Projects
Commit 7afccd77 authored by WJohnM18's avatar WJohnM18
Browse files

Refactor objects to maintain render settings value between window closes

parent 7af75565
No related branches found
No related tags found
1 merge request!6Graphical fidelity
Showing with 35 additions and 15 deletions
public interface ISettingsLoader {
IRenderSettingPreset GetLoadedPreset();
bool Load();
}
......@@ -4,7 +4,7 @@ using System.Xml.Serialization;
using UnityEditor;
using UnityEngine;
public class SettingsLoader {
public class SettingsLoader: ISettingsLoader {
private IRenderSettingPreset loadedPreset;
private IRenderSettingPresetBuilder presetBuilder;
......
......@@ -2,11 +2,26 @@
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System;
public class RenderSettingsMenu {
[SerializeField]
private static ObservableRenderPresetManager observableManager = new ObservableRenderPresetManager();
[MenuItem("Render Settings/Show Window")]
public static void ShowWindow() {
EditorWindow.GetWindow(typeof(RenderSettingsWindow));
RenderSettingPanel renderSettingPanel = new RenderSettingPanel(observableManager);
RenderSettingCreatorPanel renderSettingCreatorPanel = new RenderSettingCreatorPanel(new ObservableRenderPresetBuilder(renderSettingPanel));
ISettingsSaver settingsSaver = new SettingsSaver();
ISettingsLoader settingsLoader = new SettingsLoader(new ObservableRenderPresetBuilder(renderSettingPanel), new VisualBlueprintBuilder());
RenderSettingsWindow window = (RenderSettingsWindow)EditorWindow.GetWindow(typeof(RenderSettingsWindow));
window.Init(observableManager, settingsSaver, settingsLoader, renderSettingCreatorPanel, renderSettingPanel);
}
}
......@@ -5,29 +5,26 @@ using System;
public class RenderSettingsWindow : EditorWindow, IObserver<IRenderPresetManager> {
[SerializeField]
private IRenderPresetManager presetManager;
private ISettingsSaver settingsSaver;
private SettingsLoader settingsLoader;
private ISettingsLoader settingsLoader;
private RenderSettingCreatorPanel renderSettingCreatorPanel;
private RenderSettingPanel renderSettingPanel;
private bool isCreatingPreset = false;
public RenderSettingsWindow() {
ObservableRenderPresetManager presetManager = new ObservableRenderPresetManager();
renderSettingPanel = new RenderSettingPanel(presetManager);
renderSettingCreatorPanel = new RenderSettingCreatorPanel(new ObservableRenderPresetBuilder(renderSettingPanel));
IDisposable disposable = presetManager.Subscribe(this);
this.presetManager = presetManager;
settingsSaver = new SettingsSaver();
settingsLoader = new SettingsLoader(new ObservableRenderPresetBuilder(renderSettingPanel), new VisualBlueprintBuilder());
}
public void Init(IRenderPresetManager presetManager, ISettingsSaver saver, ISettingsLoader loader, RenderSettingCreatorPanel renderSettingCreatorPanel, RenderSettingPanel renderSettingPanel) {
this.presetManager = presetManager;
this.settingsSaver = saver;
this.settingsLoader = loader;
this.renderSettingCreatorPanel = renderSettingCreatorPanel;
this.renderSettingPanel = renderSettingPanel;
}
public void OnCompleted () {
}
public void OnError (Exception error) {
......
......@@ -24,6 +24,10 @@ public class SliderGraphicalFidelityPanel: IGraphicalFidelityPanel {
EditorGUILayout.LabelField("Current fidelity: " + graphicalFidelity.GetCurrentGraphicalFidelity());
if (GUILayout.Button("Open", GUILayout.Width(50))) {
EditorApplication.ExecuteMenuItem("Edit/Project Settings/Quality");
}
GUILayout.EndHorizontal();
DrawGraphicalFidelityOptionsSlider(graphicalFidelity);
......
......@@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using UnityEngine;
[Serializable]
public class ObservableRenderPreset: IRenderSettingPreset, IObservable<IRenderSettingPreset> {
[SerializeField]
......
......@@ -2,8 +2,10 @@ using System;
using System.Collections.Generic;
using UnityEngine;
[Serializable]
public class ObservableRenderPresetManager: IRenderPresetManager, IObservable<IRenderPresetManager> {
[SerializeField]
private List<IRenderSettingPreset> renderSettingPresets;
private List<IObserver<IRenderPresetManager>> observers;
......
......@@ -18,7 +18,7 @@ public class RenderSettingPanel: IObserver<IRenderSettingPreset> {
private IGraphicalFidelityPanel graphicalFidelityPanel;
//If the value is true, the foldout is open. Otherwise it is closed
private IDictionary<IRenderSettingPreset, bool> presetFoldoutOpen;
[SerializeField]private IDictionary<IRenderSettingPreset, bool> presetFoldoutOpen;
public RenderSettingPanel(IRenderPresetManager presetManager) {
isCreatingVisualBlueprint = false;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment