UITransitionEffectEditor.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  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(UITransitionEffect))]
  11. [CanEditMultipleObjects]
  12. public class UITransitionEffectEditor : Editor
  13. {
  14. SerializedProperty _spEffectMode;
  15. SerializedProperty _spEffectFactor;
  16. SerializedProperty _spEffectArea;
  17. SerializedProperty _spKeepAspectRatio;
  18. SerializedProperty _spDissolveWidth;
  19. SerializedProperty _spDissolveSoftness;
  20. SerializedProperty _spDissolveColor;
  21. SerializedProperty _spTransitionTexture;
  22. SerializedProperty _spPlay;
  23. SerializedProperty _spLoop;
  24. SerializedProperty _spLoopDelay;
  25. SerializedProperty _spDuration;
  26. SerializedProperty _spInitialPlayDelay;
  27. SerializedProperty _spUpdateMode;
  28. SerializedProperty _spPassRayOnHidden;
  29. /// <summary>
  30. /// This function is called when the object becomes enabled and active.
  31. /// </summary>
  32. protected void OnEnable()
  33. {
  34. _spEffectMode = serializedObject.FindProperty("m_EffectMode");
  35. _spEffectFactor = serializedObject.FindProperty("m_EffectFactor");
  36. _spEffectArea = serializedObject.FindProperty("m_EffectArea");
  37. _spKeepAspectRatio = serializedObject.FindProperty("m_KeepAspectRatio");
  38. _spDissolveWidth = serializedObject.FindProperty("m_DissolveWidth");
  39. _spDissolveSoftness = serializedObject.FindProperty("m_DissolveSoftness");
  40. _spDissolveColor = serializedObject.FindProperty("m_DissolveColor");
  41. _spTransitionTexture = serializedObject.FindProperty("m_TransitionTexture");
  42. var player = serializedObject.FindProperty("m_Player");
  43. _spPlay = player.FindPropertyRelative("play");
  44. _spDuration = player.FindPropertyRelative("duration");
  45. _spInitialPlayDelay = player.FindPropertyRelative("initialPlayDelay");
  46. _spLoop = player.FindPropertyRelative("loop");
  47. _spLoopDelay = player.FindPropertyRelative("loopDelay");
  48. _spUpdateMode = player.FindPropertyRelative("updateMode");
  49. _spPassRayOnHidden = serializedObject.FindProperty("m_PassRayOnHidden");
  50. }
  51. /// <summary>
  52. /// Implement this function to make a custom inspector.
  53. /// </summary>
  54. public override void OnInspectorGUI()
  55. {
  56. //================
  57. // Effect setting.
  58. //================
  59. using (new MaterialDirtyScope(targets))
  60. EditorGUILayout.PropertyField(_spEffectMode);
  61. EditorGUI.indentLevel++;
  62. EditorGUILayout.PropertyField(_spEffectFactor);
  63. if (_spEffectMode.intValue == (int) UITransitionEffect.EffectMode.Dissolve)
  64. {
  65. EditorGUILayout.PropertyField(_spDissolveWidth);
  66. EditorGUILayout.PropertyField(_spDissolveSoftness);
  67. EditorGUILayout.PropertyField(_spDissolveColor);
  68. }
  69. EditorGUI.indentLevel--;
  70. //================
  71. // Advanced option.
  72. //================
  73. EditorGUILayout.PropertyField(_spEffectArea);
  74. using (new MaterialDirtyScope(targets))
  75. EditorGUILayout.PropertyField(_spTransitionTexture);
  76. EditorGUILayout.PropertyField(_spKeepAspectRatio);
  77. EditorGUILayout.PropertyField(_spPassRayOnHidden);
  78. //================
  79. // Effect player.
  80. //================
  81. EditorGUILayout.PropertyField(_spPlay);
  82. EditorGUILayout.PropertyField(_spDuration);
  83. EditorGUILayout.PropertyField(_spInitialPlayDelay);
  84. EditorGUILayout.PropertyField(_spLoop);
  85. EditorGUILayout.PropertyField(_spLoopDelay);
  86. EditorGUILayout.PropertyField(_spUpdateMode);
  87. // Debug.
  88. using (new EditorGUI.DisabledGroupScope(!Application.isPlaying))
  89. using (new EditorGUILayout.HorizontalScope(EditorStyles.helpBox))
  90. {
  91. GUILayout.Label("Debug");
  92. if (GUILayout.Button("Show", "ButtonLeft"))
  93. {
  94. (target as UITransitionEffect).Show();
  95. }
  96. if (GUILayout.Button("Hide", "ButtonRight"))
  97. {
  98. (target as UITransitionEffect).Hide();
  99. }
  100. }
  101. serializedObject.ApplyModifiedProperties();
  102. }
  103. }
  104. }