-
Notifications
You must be signed in to change notification settings - Fork 869
Expand file tree
/
Copy pathSavedParameter.cs
More file actions
84 lines (70 loc) · 2.14 KB
/
SavedParameter.cs
File metadata and controls
84 lines (70 loc) · 2.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
using System;
using UnityEngine.Assertions;
namespace UnityEditor.Rendering
{
public class SavedParameter<T>
where T : IEquatable<T>
{
public delegate void SetParameter(string key, T value);
public 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
public sealed class SavedBool : SavedParameter<bool>
{
public SavedBool(string key, bool value)
: base(key, value, EditorPrefs.GetBool, EditorPrefs.SetBool) { }
}
public sealed class SavedInt : SavedParameter<int>
{
public SavedInt(string key, int value)
: base(key, value, EditorPrefs.GetInt, EditorPrefs.SetInt) { }
}
public sealed class SavedFloat : SavedParameter<float>
{
public SavedFloat(string key, float value)
: base(key, value, EditorPrefs.GetFloat, EditorPrefs.SetFloat) { }
}
public sealed class SavedString : SavedParameter<string>
{
public SavedString(string key, string value)
: base(key, value, EditorPrefs.GetString, EditorPrefs.SetString) { }
}
}