using System; using System.Collections.Generic; namespace Coroutine { /// /// This class can be used for static coroutine handling of any kind. /// Note that it uses an underlying object for management. /// public static class CoroutineHandler { private static readonly CoroutineHandlerInstance Instance = new CoroutineHandlerInstance(); /// public static int TickingCount => CoroutineHandler.Instance.TickingCount; /// public static int EventCount => CoroutineHandler.Instance.EventCount; /// public static ActiveCoroutine Start(IEnumerable coroutine, string name = "", int priority = 0) { return CoroutineHandler.Instance.Start(coroutine, name, priority); } /// public static ActiveCoroutine Start(IEnumerator coroutine, string name = "", int priority = 0) { return CoroutineHandler.Instance.Start(coroutine, name, priority); } /// public static ActiveCoroutine InvokeLater(Wait wait, Action action, string name = "", int priority = 0) { return CoroutineHandler.Instance.InvokeLater(wait, action, name, priority); } /// public static ActiveCoroutine InvokeLater(Event evt, Action action, string name = "", int priority = 0) { return CoroutineHandler.Instance.InvokeLater(evt, action, name, priority); } /// public static void Tick(double deltaSeconds) { CoroutineHandler.Instance.Tick(deltaSeconds); } /// public static void Tick(TimeSpan delta) { CoroutineHandler.Instance.Tick(delta); } /// public static void RaiseEvent(Event evt) { CoroutineHandler.Instance.RaiseEvent(evt); } /// public static IEnumerable GetActiveCoroutines() { return CoroutineHandler.Instance.GetActiveCoroutines(); } } }