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}