UIShinyEditor.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. using UnityEditor;
  2. using UnityEditorInternal;
  3. using UnityEngine;
  4. using System.Linq;
  5. namespace Coffee.UIEffects.Editors
  6. {
  7. /// <summary>
  8. /// UIEffect editor.
  9. /// </summary>
  10. [CustomEditor(typeof(UIShiny))]
  11. [CanEditMultipleObjects]
  12. public class UIShinyEditor : Editor
  13. {
  14. SerializedProperty _spEffectFactor;
  15. SerializedProperty _spWidth;
  16. SerializedProperty _spRotation;
  17. SerializedProperty _spSoftness;
  18. SerializedProperty _spBrightness;
  19. SerializedProperty _spGloss;
  20. SerializedProperty _spEffectArea;
  21. SerializedProperty _spPlay;
  22. SerializedProperty _spLoop;
  23. SerializedProperty _spLoopDelay;
  24. SerializedProperty _spDuration;
  25. SerializedProperty _spInitialPlayDelay;
  26. SerializedProperty _spUpdateMode;
  27. /// <summary>
  28. /// This function is called when the object becomes enabled and active.
  29. /// </summary>
  30. protected void OnEnable()
  31. {
  32. _spEffectFactor = serializedObject.FindProperty("m_EffectFactor");
  33. _spEffectArea = serializedObject.FindProperty("m_EffectArea");
  34. _spWidth = serializedObject.FindProperty("m_Width");
  35. _spRotation = serializedObject.FindProperty("m_Rotation");
  36. _spSoftness = serializedObject.FindProperty("m_Softness");
  37. _spBrightness = serializedObject.FindProperty("m_Brightness");
  38. _spGloss = serializedObject.FindProperty("m_Gloss");
  39. var player = serializedObject.FindProperty("m_Player");
  40. _spPlay = player.FindPropertyRelative("play");
  41. _spDuration = player.FindPropertyRelative("duration");
  42. _spInitialPlayDelay = player.FindPropertyRelative("initialPlayDelay");
  43. _spLoop = player.FindPropertyRelative("loop");
  44. _spLoopDelay = player.FindPropertyRelative("loopDelay");
  45. _spUpdateMode = player.FindPropertyRelative("updateMode");
  46. }
  47. /// <summary>
  48. /// Implement this function to make a custom inspector.
  49. /// </summary>
  50. public override void OnInspectorGUI()
  51. {
  52. serializedObject.Update();
  53. //================
  54. // Effect setting.
  55. //================
  56. EditorGUILayout.PropertyField(_spEffectFactor);
  57. EditorGUILayout.PropertyField(_spWidth);
  58. EditorGUILayout.PropertyField(_spRotation);
  59. EditorGUILayout.PropertyField(_spSoftness);
  60. EditorGUILayout.PropertyField(_spBrightness);
  61. EditorGUILayout.PropertyField(_spGloss);
  62. //================
  63. // Advanced option.
  64. //================
  65. EditorGUILayout.PropertyField(_spEffectArea);
  66. //================
  67. // Effect player.
  68. //================
  69. EditorGUILayout.PropertyField(_spPlay);
  70. EditorGUILayout.PropertyField(_spDuration);
  71. EditorGUILayout.PropertyField(_spInitialPlayDelay);
  72. EditorGUILayout.PropertyField(_spLoop);
  73. EditorGUILayout.PropertyField(_spLoopDelay);
  74. EditorGUILayout.PropertyField(_spUpdateMode);
  75. // Debug.
  76. using (new EditorGUI.DisabledGroupScope(!Application.isPlaying))
  77. using (new EditorGUILayout.HorizontalScope(EditorStyles.helpBox))
  78. {
  79. GUILayout.Label("Debug");
  80. if (GUILayout.Button("Play", "ButtonLeft"))
  81. {
  82. (target as UIShiny).Play();
  83. }
  84. if (GUILayout.Button("Stop", "ButtonRight"))
  85. {
  86. (target as UIShiny).Stop();
  87. }
  88. }
  89. serializedObject.ApplyModifiedProperties();
  90. }
  91. }
  92. }