Ei kuvausta
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.

UserSettings.cs 10KB

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