85 lines
2.7 KiB
C#
85 lines
2.7 KiB
C#
|
using UnityEditor;
|
||
|
using UnityEngine;
|
||
|
|
||
|
namespace RotaryHeart.Lib.SerializableDictionary
|
||
|
{
|
||
|
public class PreferencesWindow
|
||
|
{
|
||
|
#region GUIContent
|
||
|
static readonly GUIContent gui_pagesTitle = new GUIContent("Pages", "Section that has all the pages settings for the drawer");
|
||
|
static readonly GUIContent gui_showPages = new GUIContent("Show Pages", "Should the drawer be divided in pages?");
|
||
|
static readonly GUIContent gui_showSizes = new GUIContent("Show Sizes", "Should the dictionary show the size on the title bar?");
|
||
|
static readonly GUIContent gui_pageCount = new GUIContent("Page Count", "How many elements per page are going to be drawn");
|
||
|
#endregion
|
||
|
|
||
|
// Have we loaded the prefs yet
|
||
|
private static bool prefsLoaded = false;
|
||
|
|
||
|
//Default values
|
||
|
private static bool showPages;
|
||
|
private static bool showSize;
|
||
|
private static int pageCount;
|
||
|
|
||
|
#if UNITY_2018_3_OR_NEWER
|
||
|
private class MyPrefSettingsProvider : SettingsProvider
|
||
|
{
|
||
|
public MyPrefSettingsProvider(string path, SettingsScope scopes = SettingsScope.Project)
|
||
|
: base(path, scopes)
|
||
|
{ }
|
||
|
|
||
|
public override void OnGUI(string searchContext)
|
||
|
{
|
||
|
PreferencesGUI();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
[SettingsProvider]
|
||
|
static SettingsProvider MyNewPrefCode()
|
||
|
{
|
||
|
return new MyPrefSettingsProvider("Preferences/RHSD");
|
||
|
}
|
||
|
#else
|
||
|
// Add preferences section named "My Preferences" to the Preferences Window
|
||
|
[PreferenceItem("RHSD")]
|
||
|
#endif
|
||
|
public static void PreferencesGUI()
|
||
|
{
|
||
|
if (!prefsLoaded)
|
||
|
{
|
||
|
showPages = Constants.ShowPages;
|
||
|
showSize = Constants.ShowSize;
|
||
|
pageCount = Constants.PageCount;
|
||
|
|
||
|
prefsLoaded = true;
|
||
|
}
|
||
|
|
||
|
EditorGUILayout.LabelField(gui_pagesTitle, EditorStyles.boldLabel);
|
||
|
EditorGUILayout.Space();
|
||
|
|
||
|
showSize = EditorGUILayout.Toggle(gui_showSizes, showSize);
|
||
|
showPages = EditorGUILayout.Toggle(gui_showPages, showPages);
|
||
|
|
||
|
GUI.enabled = showPages;
|
||
|
|
||
|
pageCount = Mathf.Clamp(EditorGUILayout.IntField(gui_pageCount, pageCount), 5, int.MaxValue);
|
||
|
|
||
|
GUI.enabled = true;
|
||
|
|
||
|
if (GUI.changed)
|
||
|
{
|
||
|
Constants.ShowPages = showPages;
|
||
|
Constants.ShowSize = showSize;
|
||
|
Constants.PageCount = pageCount;
|
||
|
}
|
||
|
|
||
|
GUILayout.FlexibleSpace();
|
||
|
|
||
|
if (GUILayout.Button("Restore Default"))
|
||
|
{
|
||
|
Constants.RestoreDefaults();
|
||
|
|
||
|
prefsLoaded = false;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|