Utils/Editor/EventManagerEditor.cs

40 lines
1.4 KiB
C#

using System;
using UnityEditor;
using UnityEngine;
namespace Utils.Editor
{
[CustomEditor(typeof(EventManager), true)]
public class EventManagerEditor : UnityEditor.Editor
{
public override void OnInspectorGUI()
{
Event("EarlyUpdate", EventManager.EarlyUpdateLength, EventManager.EarlyUpdateDelegates);
EditorGUILayout.Space();
Event("Update", EventManager.UpdateLength, EventManager.UpdateDelegates);
EditorGUILayout.Space();
Event("LateUpdate", EventManager.LateUpdateLength, EventManager.LateUpdateDelegates);
EditorGUILayout.Space();
Event("LastUpdate", EventManager.LastUpdateLength, EventManager.LastUpdateDelegates);
}
private void Event(string title, int length, Delegate[] delegates)
{
{
GUILayout.BeginHorizontal();
GUILayout.Label(title, EditorStyles.boldLabel);
GUILayout.FlexibleSpace();
GUILayout.Label(length.ToString());
GUILayout.EndHorizontal();
if (length == 0) return;
foreach (var d in delegates)
{
GUILayout.Label($"{d.Method.DeclaringType}.{d.Method.Name}", EditorStyles.miniLabel);
}
}
}
}
}