public static SimpleCoroutineAwaiter <T> GetAwaiter <T>(this IEnumerator <T> coroutine) { var awaiter = new SimpleCoroutineAwaiter <T>(); UnityScheduler.Run(() => AsyncCoroutineRunner.Instance.StartCoroutine( new CoroutineWrapper <T>(coroutine, awaiter).Run())); return(awaiter); }
public static SimpleCoroutineAwaiter <UnityEngine.Object> GetAwaiter(this AssetBundleRequest instruction) { var awaiter = new SimpleCoroutineAwaiter <UnityEngine.Object>(); UnityScheduler.Run(() => AsyncCoroutineRunner.Instance.StartCoroutine( InstructionWrappers.AssetBundleRequest(awaiter, instruction))); return(awaiter); }
static SimpleCoroutineAwaiter <T> GetAwaiterReturnSelf <T>(T instruction) { var awaiter = new SimpleCoroutineAwaiter <T>(); UnityScheduler.Run(() => AsyncCoroutineRunner.Instance.StartCoroutine( InstructionWrappers.ReturnSelf(awaiter, instruction))); return(awaiter); }
public void Complete(T result, Exception e) { Assert(!_isDone); _isDone = true; _exception = e; _result = result; // Always trigger the continuation on the unity thread when awaiting on unity yield // instructions if (_continuation != null) { UnityScheduler.Run(_continuation); } }