| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- using UnityEngine;
- using UnityEngine.Rendering.PostProcessing;
- namespace UnityEditor.Rendering.PostProcessing
- {
- static class GlobalSettings
- {
- static class Keys
- {
- internal const string trackballSensitivity = "PostProcessing.Trackball.Sensitivity";
- internal const string volumeGizmoColor = "PostProcessing.Volume.GizmoColor";
- internal const string currentChannelMixer = "PostProcessing.ChannelMixer.CurrentChannel";
- internal const string currentCurve = "PostProcessing.Curve.Current";
- }
- static bool m_Loaded = false;
- static float m_TrackballSensitivity = 0.2f;
- internal static float trackballSensitivity
- {
- get { return m_TrackballSensitivity; }
- set { TrySave(ref m_TrackballSensitivity, value, Keys.trackballSensitivity); }
- }
- static Color m_VolumeGizmoColor = new Color(0.2f, 0.8f, 0.1f, 0.5f);
- internal static Color volumeGizmoColor
- {
- get { return m_VolumeGizmoColor; }
- set { TrySave(ref m_VolumeGizmoColor, value, Keys.volumeGizmoColor); }
- }
- static int m_CurrentChannelMixer = 0;
- internal static int currentChannelMixer
- {
- get { return m_CurrentChannelMixer; }
- set { TrySave(ref m_CurrentChannelMixer, value, Keys.currentChannelMixer); }
- }
- static int m_CurrentCurve = 0;
- internal static int currentCurve
- {
- get { return m_CurrentCurve; }
- set { TrySave(ref m_CurrentCurve, value, Keys.currentCurve); }
- }
- static GlobalSettings()
- {
- Load();
- }
- #if UNITY_2018_3_OR_NEWER
- [SettingsProvider]
- static SettingsProvider PreferenceGUI()
- {
- return new SettingsProvider("Preferences/Post-processing", SettingsScope.User)
- {
- guiHandler = searchContext => OpenGUI()
- };
- }
- #else
- [PreferenceItem("Post-processing")]
- static void PreferenceGUI()
- {
- OpenGUI();
- }
- #endif
- static void OpenGUI()
- {
- if (!m_Loaded)
- Load();
- EditorGUILayout.Space();
- trackballSensitivity = EditorGUILayout.Slider("Trackballs Sensitivity", trackballSensitivity, 0.05f, 1f);
- volumeGizmoColor = EditorGUILayout.ColorField("Volume Gizmo Color", volumeGizmoColor);
- }
- static void Load()
- {
- m_TrackballSensitivity = EditorPrefs.GetFloat(Keys.trackballSensitivity, 0.2f);
- m_VolumeGizmoColor = GetColor(Keys.volumeGizmoColor, new Color(0.2f, 0.8f, 0.1f, 0.5f));
- m_CurrentChannelMixer = EditorPrefs.GetInt(Keys.currentChannelMixer, 0);
- m_CurrentCurve = EditorPrefs.GetInt(Keys.currentCurve, 0);
- m_Loaded = true;
- }
- static Color GetColor(string key, Color defaultValue)
- {
- int value = EditorPrefs.GetInt(key, (int)ColorUtilities.ToHex(defaultValue));
- return ColorUtilities.ToRGBA((uint)value);
- }
- static void TrySave<T>(ref T field, T newValue, string key)
- {
- if (field.Equals(newValue))
- return;
- if (typeof(T) == typeof(float))
- EditorPrefs.SetFloat(key, (float)(object)newValue);
- else if (typeof(T) == typeof(int))
- EditorPrefs.SetInt(key, (int)(object)newValue);
- else if (typeof(T) == typeof(bool))
- EditorPrefs.SetBool(key, (bool)(object)newValue);
- else if (typeof(T) == typeof(string))
- EditorPrefs.SetString(key, (string)(object)newValue);
- else if (typeof(T) == typeof(Color))
- EditorPrefs.SetInt(key, (int)ColorUtilities.ToHex((Color)(object)newValue));
- field = newValue;
- }
- }
- }
|