public void add(Action increment, Func <int, bool> isDone, float tick, Action clientCallback) { IncrementalProcess inc = new IncrementalProcess(); inc.increment = increment; inc.isDone = isDone; inc.tick = tick; jobs.Enqueue(inc); while (jobs.Count > purgeJobsThreshhold) { jobs.Dequeue(); } runQueue(clientCallback); }
private void runQueue(Action clientCallback) { if (busy) { return; } if (jobs.Count > 0) { busy = true; current = jobs.Dequeue(); //Dequeueing inside of StartCoroutine crashes Unity?? StartCoroutine(current.run(() => { busy = false; clientCallback.Invoke(); runQueue(clientCallback); })); } }