A game about forced loneliness, made by TACStudios
1using System;
2using UnityEngine;
3
4namespace UnityEditor.U2D.Common.Path
5{
6 internal class ControlPointSettings
7 {
8 const string kControlPointRKey = UserSettings.kSettingsUniqueKey + "PathEditorSetting.ControlPointR";
9 const string kControlPointGKey = UserSettings.kSettingsUniqueKey + "PathEditorSetting.ControlPointG";
10 const string kControlPointBKey = UserSettings.kSettingsUniqueKey + "PathEditorSetting.ControlPointB";
11 const string kControlPointAKey = UserSettings.kSettingsUniqueKey + "PathEditorSetting.ControlPointA";
12 static readonly GUIContent kControlPointKeyContent = EditorGUIUtility.TrTextContent("ControlPoint Color");
13
14 const string kControlPointSRKey = UserSettings.kSettingsUniqueKey + "PathEditorSetting.ControlPointSR";
15 const string kControlPointSGKey = UserSettings.kSettingsUniqueKey + "PathEditorSetting.ControlPointSG";
16 const string kControlPointSBKey = UserSettings.kSettingsUniqueKey + "PathEditorSetting.ControlPointSB";
17 const string kControlPointSAKey = UserSettings.kSettingsUniqueKey + "PathEditorSetting.ControlPointSA";
18 static readonly GUIContent kControlPointSKeyContent = EditorGUIUtility.TrTextContent("ControlPoint (Selected)");
19
20 static bool showHandle = true;
21
22 public static Color controlPointColor
23 {
24 get
25 {
26 return new Color()
27 {
28 r = EditorPrefs.GetFloat(kControlPointRKey, 1),
29 g = EditorPrefs.GetFloat(kControlPointGKey, 1),
30 b = EditorPrefs.GetFloat(kControlPointBKey, 1),
31 a = EditorPrefs.GetFloat(kControlPointAKey, 1)
32 };
33 }
34 set
35 {
36 EditorPrefs.SetFloat(kControlPointRKey, value.r);
37 EditorPrefs.SetFloat(kControlPointGKey, value.g);
38 EditorPrefs.SetFloat(kControlPointBKey, value.b);
39 EditorPrefs.SetFloat(kControlPointAKey, value.a);
40 }
41 }
42
43 public static Color controlPointSelectedColor
44 {
45 get
46 {
47 return new Color()
48 {
49 r = EditorPrefs.GetFloat(kControlPointSRKey, 1),
50 g = EditorPrefs.GetFloat(kControlPointSGKey, 235.0f / 255.0f),
51 b = EditorPrefs.GetFloat(kControlPointSBKey, 4F / 255F),
52 a = EditorPrefs.GetFloat(kControlPointSAKey, 1)
53 };
54 }
55 set
56 {
57 EditorPrefs.SetFloat(kControlPointSRKey, value.r);
58 EditorPrefs.SetFloat(kControlPointSGKey, value.g);
59 EditorPrefs.SetFloat(kControlPointSBKey, value.b);
60 EditorPrefs.SetFloat(kControlPointSAKey, value.a);
61 }
62 }
63
64 internal void SetDefault()
65 {
66 controlPointColor = Color.white;
67 controlPointSelectedColor = new Color(1.0f, 235.0f / 255.0f, 4.0f / 255.0f, 1.0f);
68 }
69
70 public void OnGUI()
71 {
72 EditorGUILayout.Space(8);
73 showHandle = EditorGUILayout.BeginFoldoutHeaderGroup(showHandle, "Control Points");
74 if (showHandle)
75 {
76 EditorGUI.indentLevel++;
77
78 EditorGUI.BeginChangeCheck();
79 var sc = EditorGUILayout.ColorField(kControlPointKeyContent, controlPointColor);
80 if (EditorGUI.EndChangeCheck())
81 controlPointColor = sc;
82
83 EditorGUI.BeginChangeCheck();
84 var sh = EditorGUILayout.ColorField(kControlPointSKeyContent, controlPointSelectedColor);
85 if (EditorGUI.EndChangeCheck())
86 controlPointSelectedColor = sh;
87
88 EditorGUI.indentLevel--;
89 }
90 EditorGUILayout.EndFoldoutHeaderGroup();
91 }
92 }
93 internal class HandleSettings
94 {
95 const string kSplineRKey = UserSettings.kSettingsUniqueKey + "PathEditorSetting.SplineR";
96 const string kSplineGKey = UserSettings.kSettingsUniqueKey + "PathEditorSetting.SplineG";
97 const string kSplineBKey = UserSettings.kSettingsUniqueKey + "PathEditorSetting.SplineB";
98 const string kSplineAKey = UserSettings.kSettingsUniqueKey + "PathEditorSetting.SplineA";
99 static readonly GUIContent kSplineKeyContent = EditorGUIUtility.TrTextContent("Spline Color");
100
101 const string kSplineHRKey = UserSettings.kSettingsUniqueKey + "PathEditorSetting.SplineHR";
102 const string kSplineHGKey = UserSettings.kSettingsUniqueKey + "PathEditorSetting.SplineHG";
103 const string kSplineHBKey = UserSettings.kSettingsUniqueKey + "PathEditorSetting.SplineHB";
104 const string kSplineHAKey = UserSettings.kSettingsUniqueKey + "PathEditorSetting.SplineHA";
105 static readonly GUIContent kSplineHKeyContent = EditorGUIUtility.TrTextContent("Spline Color (Hovered)");
106
107 const string kTangentRKey = UserSettings.kSettingsUniqueKey + "PathEditorSetting.TangentR";
108 const string kTangentGKey = UserSettings.kSettingsUniqueKey + "PathEditorSetting.TangentG";
109 const string kTangentBKey = UserSettings.kSettingsUniqueKey + "PathEditorSetting.TangentB";
110 const string kTangentAKey = UserSettings.kSettingsUniqueKey + "PathEditorSetting.TangentA";
111 static readonly GUIContent kTangentKeyContent = EditorGUIUtility.TrTextContent("Tangent Color");
112
113 static bool showHandle = true;
114
115 public static Color splineColor
116 {
117 get
118 {
119 return new Color()
120 {
121 r = EditorPrefs.GetFloat(kSplineRKey, 1),
122 g = EditorPrefs.GetFloat(kSplineGKey, 1),
123 b = EditorPrefs.GetFloat(kSplineBKey, 1),
124 a = EditorPrefs.GetFloat(kSplineAKey, 1)
125 };
126 }
127 set
128 {
129 EditorPrefs.SetFloat(kSplineRKey, value.r);
130 EditorPrefs.SetFloat(kSplineGKey, value.g);
131 EditorPrefs.SetFloat(kSplineBKey, value.b);
132 EditorPrefs.SetFloat(kSplineAKey, value.a);
133 }
134 }
135
136 public static Color splineHoveredColor
137 {
138 get
139 {
140 return new Color()
141 {
142 r = EditorPrefs.GetFloat(kSplineHRKey, 1),
143 g = EditorPrefs.GetFloat(kSplineHGKey, 235.0f / 255.0f),
144 b = EditorPrefs.GetFloat(kSplineHBKey, 4F / 255F),
145 a = EditorPrefs.GetFloat(kSplineHAKey, 1)
146 };
147 }
148 set
149 {
150 EditorPrefs.SetFloat(kSplineHRKey, value.r);
151 EditorPrefs.SetFloat(kSplineHGKey, value.g);
152 EditorPrefs.SetFloat(kSplineHBKey, value.b);
153 EditorPrefs.SetFloat(kSplineHAKey, value.a);
154 }
155 }
156
157 public static Color tangentColor
158 {
159 get
160 {
161 return new Color()
162 {
163 r = EditorPrefs.GetFloat(kTangentRKey, 1),
164 g = EditorPrefs.GetFloat(kTangentGKey, 235.0f / 255.0f),
165 b = EditorPrefs.GetFloat(kTangentBKey, 4F / 255F),
166 a = EditorPrefs.GetFloat(kTangentAKey, 1)
167 };
168 }
169 set
170 {
171 EditorPrefs.SetFloat(kTangentRKey, value.r);
172 EditorPrefs.SetFloat(kTangentGKey, value.g);
173 EditorPrefs.SetFloat(kTangentBKey, value.b);
174 EditorPrefs.SetFloat(kTangentAKey, value.a);
175 }
176 }
177
178 internal void SetDefault()
179 {
180 splineColor = Color.white;
181 splineHoveredColor = new Color(1.0f, 235.0f / 255.0f, 4.0f / 255.0f, 1.0f);
182 tangentColor = new Color(1.0f, 235.0f / 255.0f, 4.0f / 255.0f, 1.0f);
183 }
184
185 public void OnGUI()
186 {
187 EditorGUILayout.Space(8);
188 showHandle = EditorGUILayout.BeginFoldoutHeaderGroup(showHandle, "Splines and Tangent");
189 if (showHandle)
190 {
191 EditorGUI.indentLevel++;
192
193 EditorGUI.BeginChangeCheck();
194 var sc = EditorGUILayout.ColorField(kSplineKeyContent, splineColor);
195 if (EditorGUI.EndChangeCheck())
196 splineColor = sc;
197
198 EditorGUI.BeginChangeCheck();
199 var sh = EditorGUILayout.ColorField(kSplineHKeyContent, splineHoveredColor);
200 if (EditorGUI.EndChangeCheck())
201 splineHoveredColor = sh;
202
203 EditorGUI.BeginChangeCheck();
204 var tc = EditorGUILayout.ColorField(kTangentKeyContent, tangentColor);
205 if (EditorGUI.EndChangeCheck())
206 tangentColor = tc;
207
208 EditorGUI.indentLevel--;
209 }
210 EditorGUILayout.EndFoldoutHeaderGroup();
211 }
212 }
213
214 internal class UserSettings : SettingsProvider
215 {
216 public const string kSettingsUniqueKey = "UnityEditor.U2D.SpriteShape/";
217 private static ControlPointSettings s_ControlPointSettings = new ControlPointSettings();
218 private static HandleSettings s_HandleSettings = new HandleSettings();
219
220 public UserSettings() : base("Preferences/2D/SpriteShape", SettingsScope.User)
221 {
222 guiHandler = OnGUI;
223 }
224
225 [SettingsProvider]
226 private static SettingsProvider CreateSettingsProvider()
227 {
228 return new UserSettings()
229 {
230 guiHandler = SettingsGUI
231 };
232 }
233
234 private static void SettingsGUI(string searchContext)
235 {
236 s_ControlPointSettings.OnGUI();
237 s_HandleSettings.OnGUI();
238 EditorGUILayout.Space();
239
240 if (GUILayout.Button("Use Defaults", new GUILayoutOption[] { GUILayout.Width(100)}))
241 {
242 s_ControlPointSettings.SetDefault();
243 s_HandleSettings.SetDefault();
244 }
245 }
246 }
247}