Utils/Runtime/EventManager.cs

90 lines
2.1 KiB
C#

using UnityEngine;
namespace Utils
{
public class EventManager : MonoBehaviour
{
public delegate void UpdateAction();
public static event UpdateAction Updated;
public delegate void FixedUpdateAction();
public static event FixedUpdateAction FixedUpdated;
public delegate void LateUpdateAction();
public static event LateUpdateAction LateUpdated;
public delegate void EarlyUpdateAction();
public static event EarlyUpdateAction EarlyUpdated;
public delegate void LastUpdateAction();
public static event LastUpdateAction LastUpdated;
private void Update()
{
EarlyUpdated?.Invoke();
Updated?.Invoke();
}
private void FixedUpdate()
{
FixedUpdated?.Invoke();
}
private void LateUpdate()
{
LateUpdated?.Invoke();
LastUpdated?.Invoke();
}
public static int UpdateLength
{
get
{
var list = Updated?.GetInvocationList();
return list?.Length ?? 0;
}
}
public static int FixedUpdateLength
{
get
{
var list = FixedUpdated?.GetInvocationList();
return list?.Length ?? 0;
}
}
public static int LateUpdateLength
{
get
{
var list = LateUpdated?.GetInvocationList();
return list?.Length ?? 0;
}
}
public static int EarlyUpdateLength
{
get
{
var list = EarlyUpdated?.GetInvocationList();
return list?.Length ?? 0;
}
}
public static int LastUpdateLength
{
get
{
var list = LastUpdated?.GetInvocationList();
return list?.Length ?? 0;
}
}
}
}