1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- // Animancer // https://kybernetik.com.au/animancer // Copyright 2018-2024 Kybernetik //
- #if UNITY_EDITOR
- using UnityEditor;
- using UnityEngine;
- namespace Animancer.Editor
- {
- /// <summary>[Editor-Only] A custom GUI for an <see cref="AnimancerEvent.Dispatcher"/>.</summary>
- /// https://kybernetik.com.au/animancer/api/Animancer.Editor/AnimancerEventDispatcherDrawer
- [CustomGUI(typeof(AnimancerEvent.Dispatcher))]
- public class AnimancerEventDispatcherDrawer : CustomGUI<AnimancerEvent.Dispatcher>
- {
- /************************************************************************************************************************/
- /// <inheritdoc/>
- public override void DoGUI()
- {
- var state = Value.State;
- var events = state?.SharedEvents;
- if (events == null)
- {
- EditorGUILayout.LabelField("Event Dispatcher", "Null");
- return;
- }
- var targetPath = state != null
- ? state.GetPath()
- : "Null";
- var eventSequenceDrawer = EventSequenceDrawer.Get(events);
- var area = AnimancerGUI.LayoutRect(eventSequenceDrawer.CalculateHeight(events));
- using (var label = PooledGUIContent.Acquire("Event Dispatcher"))
- using (var summary = PooledGUIContent.Acquire(targetPath))
- eventSequenceDrawer.DoGUI(ref area, events, label, summary);
- if (eventSequenceDrawer.IsExpanded && state != null)
- {
- EditorGUI.indentLevel++;
- var enabled = GUI.enabled;
- GUI.enabled = false;
- EditorGUILayout.Toggle("Has Owned Events", state.HasOwnedEvents);
- GUI.enabled = enabled;
- EditorGUI.indentLevel--;
- }
- }
- /************************************************************************************************************************/
- }
- }
- #endif
|