public static AsyncDispatch Dispatch(Action task) { lock (dispatchQueue) { AsyncDispatch dispatch = new AsyncDispatch(); dispatchQueue.Enqueue(() => { task(); dispatch.FinishedDispatch(); }); return(dispatch); } }
public static AsyncDispatch Dispatch(IEnumerator task, bool showUI = false) { lock (dispatchQueue) { AsyncDispatch dispatch = new AsyncDispatch(); dispatchQueue.Enqueue(() => { if (showUI) { EditorCoroutineRunner.StartCoroutineWithUI(DispatchCorotine(task, dispatch), "Dispatcher task", false); } else { EditorCoroutineRunner.StartCoroutine(task); } }); return(dispatch); } }
static IEnumerator DispatchCorotine(IEnumerator dispatched, AsyncDispatch tracker) { yield return(dispatched); tracker.FinishedDispatch(); }