You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.1 KiB
84 lines
2.1 KiB
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) { } |
|
} |
|
}
|
|
|