// Animancer // https://kybernetik.com.au/animancer // Copyright 2018-2024 Kybernetik //
#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
namespace Animancer.Editor
{
/// [Editor-Only] A custom GUI for an .
/// https://kybernetik.com.au/animancer/api/Animancer.Editor/AnimancerEventDispatcherDrawer
[CustomGUI(typeof(AnimancerEvent.Dispatcher))]
public class AnimancerEventDispatcherDrawer : CustomGUI
{
/************************************************************************************************************************/
///
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