123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- using System;
- using UnityEngine.Assertions;
- namespace UnityEditor.Rendering.Universal
- {
- class SavedParameter<T>
- where T : IEquatable<T>
- {
- internal delegate void SetParameter(string key, T value);
- internal delegate T GetParameter(string key, T defaultValue);
- readonly string m_Key;
- bool m_Loaded;
- T m_Value;
- readonly SetParameter m_Setter;
- readonly GetParameter m_Getter;
- public SavedParameter(string key, T value, GetParameter getter, SetParameter setter)
- {
- Assert.IsNotNull(setter);
- Assert.IsNotNull(getter);
- m_Key = key;
- m_Loaded = false;
- m_Value = value;
- m_Setter = setter;
- m_Getter = getter;
- }
- void Load()
- {
- if (m_Loaded)
- return;
- m_Loaded = true;
- m_Value = m_Getter(m_Key, m_Value);
- }
- public T value
- {
- get
- {
- Load();
- return m_Value;
- }
- set
- {
- Load();
- if (m_Value.Equals(value))
- return;
- m_Value = value;
- m_Setter(m_Key, value);
- }
- }
- }
- // Pre-specialized class for easier use and compatibility with existing code
- sealed class SavedBool : SavedParameter<bool>
- {
- public SavedBool(string key, bool value)
- : base(key, value, EditorPrefs.GetBool, EditorPrefs.SetBool) { }
- }
- sealed class SavedInt : SavedParameter<int>
- {
- public SavedInt(string key, int value)
- : base(key, value, EditorPrefs.GetInt, EditorPrefs.SetInt) { }
- }
- sealed class SavedFloat : SavedParameter<float>
- {
- public SavedFloat(string key, float value)
- : base(key, value, EditorPrefs.GetFloat, EditorPrefs.SetFloat) { }
- }
- sealed class SavedString : SavedParameter<string>
- {
- public SavedString(string key, string value)
- : base(key, value, EditorPrefs.GetString, EditorPrefs.SetString) { }
- }
- }
|