Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <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);
        }
Ejemplo n.º 4
0
        private static IEnumerator RunTimer(TimerBadge timerBadge, float seconds, Action callback)
        {
            yield return(new WaitForSeconds(seconds));

            instance.coroutines.Remove(timerBadge);
            timerBadge.Expire();
            callback?.Invoke();
        }
Ejemplo n.º 5
0
 public static void StopFixedUpdate(TimerBadge timerBadge)
 {
     if (!instance.fixedUpdateActions.ContainsKey(timerBadge))
     {
         return;
     }
     instance.fixedUpdateActionsList.Remove(instance.fixedUpdateActions[timerBadge]);
     instance.fixedUpdateActions.Remove(timerBadge);
     timerBadge.Expire();
 }
Ejemplo n.º 6
0
 public static void Stop(TimerBadge timerBadge)
 {
     if (!instance.coroutines.ContainsKey(timerBadge))
     {
         return;
     }
     instance.StopCoroutine(instance.coroutines[timerBadge]);
     instance.coroutines.Remove(timerBadge);
     timerBadge.Expire();
 }