/// <summary> /// Repeat action per time interval /// </summary> /// <param name="action">Action to repeat</param> /// <param name="interval">Time interval in seconds</param> /// <returns>Returns timer badge used to stop the timer</returns> public static TimerBadge Repeat(Action action, float interval) { var timerBadge = new TimerBadge(instance.coroutines.Count, DateTime.Now); instance.coroutines.Add(timerBadge, instance.StartCoroutine(RunInterval(interval, action))); return(timerBadge); }
/// <summary> /// Execute callback after seconds /// </summary> /// <param name="seconds">Time for executing action</param> /// <param name="callback">Callback to invoke after seconds</param> /// <returns>Returns timer badge used to stop the timer</returns> public static TimerBadge Set(float seconds, Action callback) { var timerBadge = new TimerBadge(instance.coroutines.Count, DateTime.Now, seconds); instance.coroutines.Add(timerBadge, instance.StartCoroutine(RunTimer(timerBadge, seconds, callback))); return(timerBadge); }
/// <summary> /// Execute action every frame forever /// </summary> /// <param name="action">Action to run</param> /// <returns>Returns timer badge used to stop the timer</returns> public static TimerBadge RunInUpdate(Action action) { var timerBadge = new TimerBadge(instance.updateActions.Count, DateTime.Now); instance.updateActions.Add(timerBadge, action); instance.updateActionsList.Add(action); return(timerBadge); }
private static IEnumerator RunTimer(TimerBadge timerBadge, float seconds, Action callback) { yield return(new WaitForSeconds(seconds)); instance.coroutines.Remove(timerBadge); timerBadge.Expire(); callback?.Invoke(); }
public static void StopFixedUpdate(TimerBadge timerBadge) { if (!instance.fixedUpdateActions.ContainsKey(timerBadge)) { return; } instance.fixedUpdateActionsList.Remove(instance.fixedUpdateActions[timerBadge]); instance.fixedUpdateActions.Remove(timerBadge); timerBadge.Expire(); }
public static void Stop(TimerBadge timerBadge) { if (!instance.coroutines.ContainsKey(timerBadge)) { return; } instance.StopCoroutine(instance.coroutines[timerBadge]); instance.coroutines.Remove(timerBadge); timerBadge.Expire(); }