Exemple #1
0
 public TimerHandle(TimerManager manager, long timestamp, FAction callback)
 {
     this.manager     = manager;
     this.TimeoutTime = timestamp;
     this.Callback    = callback;
     this.StartTime   = manager.now;
 }
Exemple #2
0
        public static ITimer StartTimerTimeoutAt(long timestamp, FAction callback, string name = null)
        {
            var timer = manager.StartTimer(timestamp, callback);

            timer.Name = name;
            return(timer);
        }
Exemple #3
0
 public static ITimer StartTimer(long milliseconds, FAction callback, string name = null)
 {
     return(StartTimerTimeoutAt(
                TimeTick.NowReal.TimeStamp + milliseconds,
                callback,
                name
                ));
 }
Exemple #4
0
 public static IEnumerator AsCoroutineEvery(long milliseconds, FAction coroutine)
 {
     while (true)
     {
         coroutine();
         yield return(WaitFor.Milliseconds(milliseconds));
     }
 }
Exemple #5
0
 public WaitForJob(FAction action)
 {
     ThreadPool.QueueUserWorkItem(state =>
     {
         try
         {
             action();
         }
         finally
         {
             IsYield = false;
         }
     });
 }
Exemple #6
0
        public ITimer StartTimer(long timestamp, FAction callback)
        {
            if (now < 0)
            {
                throw new TimerException("StartTimer before first update.");
            }
            if (timestamp < now)
            {
                throw new TimerException("Timer timeout before now.");
            }
            var timer = new TimerHandle(this, timestamp, callback);

            var id = timestamp / robinTime;

            var queue = timers.GetValueOrAdd(id);

            queue.Add(timer);
            return(timer);
        }
Exemple #7
0
 public static ITimer StartTimerTimeoutAt(FDateTime dt, FAction callback, string name = null)
 {
     return(StartTimerTimeoutAt(dt.TimeStamp, callback, name));
 }
Exemple #8
0
 public static ICoroutine StartCoroutineEvery(long milliseconds, FAction coroutine, string name = null)
 {
     return(StartCoroutine(AsCoroutineEvery(milliseconds, coroutine), name));
 }
Exemple #9
0
        public static IEnumerator AsCoroutineAfter(long milliseconds, FAction coroutine)
        {
            yield return(WaitFor.Milliseconds(milliseconds));

            coroutine();
        }
Exemple #10
0
 public static ICoroutineYield Job <T1, T2>(T1 arg1, T2 arg2, FAction <T1, T2> action)
 {
     return(new WaitForJob <T1, T2>(arg1, arg2, action));
 }
Exemple #11
0
 public static ICoroutineYield Job(FAction action)
 {
     return(new WaitForJob(action));
 }