public static SimpleCoroutineAwaiter <UnityEngine.Object> GetAwaiter(this ResourceRequest instruction) { var awaiter = new SimpleCoroutineAwaiter <UnityEngine.Object>(); UnitySystem.RunOnUnityScheduler(() => UnitySystem.SystemBehavior.StartCoroutine( InstructionWrappers.ResourceRequest(awaiter, instruction))); return(awaiter); }
static SimpleCoroutineAwaiter <T> GetAwaiterReturnSelf <T>(T instruction) { var awaiter = new SimpleCoroutineAwaiter <T>(); UnitySystem.RunOnUnityScheduler(() => UnitySystem.SystemBehavior.StartCoroutine( InstructionWrappers.ReturnSelf(awaiter, instruction))); return(awaiter); }
public static SimpleCoroutineAwaiter <AssetBundle> GetAwaiter(this AssetBundleCreateRequest instruction) { SystemBehavior behavior = UnitySystem.SystemBehavior; var awaiter = new SimpleCoroutineAwaiter <AssetBundle>(); UnitySystem.RunOnUnityScheduler(() => UnitySystem.SystemBehavior.StartCoroutine( InstructionWrappers.AssetBundleCreateRequest(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) { UnitySystem.RunOnUnityScheduler(_continuation); } }