diff options
Diffstat (limited to 'Assets/Scripts/Editor/UITransitionEffectEditor.cs')
-rw-r--r-- | Assets/Scripts/Editor/UITransitionEffectEditor.cs | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/Assets/Scripts/Editor/UITransitionEffectEditor.cs b/Assets/Scripts/Editor/UITransitionEffectEditor.cs new file mode 100644 index 0000000..803c9bf --- /dev/null +++ b/Assets/Scripts/Editor/UITransitionEffectEditor.cs @@ -0,0 +1,115 @@ +using UnityEditor; +using UnityEditorInternal; +using UnityEngine; +using System.Linq; + +namespace Coffee.UIEffects.Editors +{ + /// <summary> + /// UIEffect editor. + /// </summary> + [CustomEditor(typeof(UITransitionEffect))] + [CanEditMultipleObjects] + public class UITransitionEffectEditor : Editor + { + SerializedProperty _spEffectMode; + SerializedProperty _spEffectFactor; + SerializedProperty _spEffectArea; + SerializedProperty _spKeepAspectRatio; + SerializedProperty _spDissolveWidth; + SerializedProperty _spDissolveSoftness; + SerializedProperty _spDissolveColor; + SerializedProperty _spTransitionTexture; + SerializedProperty _spPlay; + SerializedProperty _spLoop; + SerializedProperty _spLoopDelay; + SerializedProperty _spDuration; + SerializedProperty _spInitialPlayDelay; + SerializedProperty _spUpdateMode; + SerializedProperty _spPassRayOnHidden; + + /// <summary> + /// This function is called when the object becomes enabled and active. + /// </summary> + protected void OnEnable() + { + _spEffectMode = serializedObject.FindProperty("m_EffectMode"); + _spEffectFactor = serializedObject.FindProperty("m_EffectFactor"); + _spEffectArea = serializedObject.FindProperty("m_EffectArea"); + _spKeepAspectRatio = serializedObject.FindProperty("m_KeepAspectRatio"); + _spDissolveWidth = serializedObject.FindProperty("m_DissolveWidth"); + _spDissolveSoftness = serializedObject.FindProperty("m_DissolveSoftness"); + _spDissolveColor = serializedObject.FindProperty("m_DissolveColor"); + _spTransitionTexture = serializedObject.FindProperty("m_TransitionTexture"); + var player = serializedObject.FindProperty("m_Player"); + _spPlay = player.FindPropertyRelative("play"); + _spDuration = player.FindPropertyRelative("duration"); + _spInitialPlayDelay = player.FindPropertyRelative("initialPlayDelay"); + _spLoop = player.FindPropertyRelative("loop"); + _spLoopDelay = player.FindPropertyRelative("loopDelay"); + _spUpdateMode = player.FindPropertyRelative("updateMode"); + _spPassRayOnHidden = serializedObject.FindProperty("m_PassRayOnHidden"); + } + + /// <summary> + /// Implement this function to make a custom inspector. + /// </summary> + public override void OnInspectorGUI() + { + //================ + // Effect setting. + //================ + using (new MaterialDirtyScope(targets)) + EditorGUILayout.PropertyField(_spEffectMode); + + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(_spEffectFactor); + if (_spEffectMode.intValue == (int) UITransitionEffect.EffectMode.Dissolve) + { + EditorGUILayout.PropertyField(_spDissolveWidth); + EditorGUILayout.PropertyField(_spDissolveSoftness); + EditorGUILayout.PropertyField(_spDissolveColor); + } + + EditorGUI.indentLevel--; + + //================ + // Advanced option. + //================ + EditorGUILayout.PropertyField(_spEffectArea); + using (new MaterialDirtyScope(targets)) + EditorGUILayout.PropertyField(_spTransitionTexture); + EditorGUILayout.PropertyField(_spKeepAspectRatio); + EditorGUILayout.PropertyField(_spPassRayOnHidden); + + //================ + // Effect player. + //================ + EditorGUILayout.PropertyField(_spPlay); + EditorGUILayout.PropertyField(_spDuration); + EditorGUILayout.PropertyField(_spInitialPlayDelay); + EditorGUILayout.PropertyField(_spLoop); + EditorGUILayout.PropertyField(_spLoopDelay); + EditorGUILayout.PropertyField(_spUpdateMode); + + // Debug. + using (new EditorGUI.DisabledGroupScope(!Application.isPlaying)) + using (new EditorGUILayout.HorizontalScope(EditorStyles.helpBox)) + { + GUILayout.Label("Debug"); + + if (GUILayout.Button("Show", "ButtonLeft")) + { + (target as UITransitionEffect).Show(); + } + + if (GUILayout.Button("Hide", "ButtonRight")) + { + (target as UITransitionEffect).Hide(); + } + } + + serializedObject.ApplyModifiedProperties(); + } + } +} |