private void DoCallback(Action callback) { try { callback(); } catch (Exception e) { HugsLibUtility.BlameCallbackException("CallbackScheduler", callback, e); } }
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); } } }
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); } } }
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--; } }