using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;

public class MonoMgr : SingletonAutoMono<MonoMgr>
{
    private event UnityAction onUpdate;


    private event UnityAction onFixedUpdate;

    private event UnityAction onLateUpdate;


    public void AddUpdateListener(UnityAction action)
    {
        onUpdate += action;
    }

    public void RemoveUpdateListener(UnityAction action)
    {
        onUpdate -= action;
    }

    public void AddFixedUpdateListener(UnityAction action)
    {
        onFixedUpdate += action;
    }

    public void RemoveFixedUpdateListener(UnityAction action)
    {
        onFixedUpdate -= action;
    }

    public void AddLateUpdateListener(UnityAction action)
    {
        onLateUpdate += action;
    }

    public void RemoveLateUpdateListener(UnityAction action)
    {
        onLateUpdate -= action;
    }


    private void Update()
    {
        onUpdate?.Invoke();
    }

    private void FixedUpdate()
    {
        onFixedUpdate?.Invoke();
    }
    
    private void LateUpdate()
    {
        onLateUpdate?.Invoke();
    }
}