private void DoCallback(Action callback)
 {
     try {
         callback();
     } catch (Exception e) {
         HugsLibUtility.BlameCallbackException("CallbackScheduler", callback, e);
     }
 }
示例#2
0
        internal void OnMapLoaded(Map map)
        {
            var numCalls = nextMapLoaded.Count;

            while (numCalls-- > 0)
            {
                var callback = nextMapLoaded.Dequeue();
                try {
                    callback(map);
                } catch (Exception e) {
                    HugsLibUtility.BlameCallbackException("DoLaterScheduler", callback, e);
                }
            }
        }
示例#3
0
        private void InvokeCallbacks(Queue <Action> queue)
        {
            // allows for re-scheduling callbacks while they are being invoked
            var numCalls = queue.Count;

            while (numCalls-- > 0)
            {
                var callback = queue.Dequeue();
                try {
                    callback();
                } catch (Exception e) {
                    HugsLibUtility.BlameCallbackException("DoLaterScheduler", callback, e);
                }
            }
        }
示例#4
0
            public void Tick(int currentTick)
            {
                if (nextCycleStart <= currentTick)
                {
                    currentIndex   = 0;
                    nextCycleStart = currentTick + tickInterval;
                }
                var numCallbacksThisTick = Math.Ceiling(tickList.Count / (float)tickInterval);

                while (numCallbacksThisTick > 0)
                {
                    if (currentIndex >= tickList.Count)
                    {
                        break;
                    }
                    try {
                        tickList[currentIndex]();
                    } catch (Exception e) {
                        HugsLibUtility.BlameCallbackException("DistributedTickScheduler", tickList[currentIndex], e);
                    }
                    currentIndex++;
                    numCallbacksThisTick--;
                }
            }