public static UniTask <T> ToUniTask <T>(this AsyncOperationHandle <T> handle, IProgress <float> progress =
                                                null, PlayerLoopTiming timing = PlayerLoopTiming.Update, CancellationToken cancellationToken =
                                                default(CancellationToken))
        {
            if (cancellationToken.IsCancellationRequested)
            {
                return(UniTask.FromCanceled <T>(cancellationToken));
            }

            if (!handle.IsValid())
            {
                throw new Exception("Attempting to use an invalid operation handle");
            }

            if (handle.IsDone)
            {
                if (handle.Status == AsyncOperationStatus.Failed)
                {
                    return(UniTask.FromException <T>(handle.OperationException));
                }
                return(UniTask.FromResult(handle.Result));
            }

            return(new UniTask <T>(AsyncOperationHandleConfiguredSource <T> .Create(handle, timing, progress, cancellationToken, out var token), token));
        }
Example #2
0
 public static UniTask <AsyncGPUReadbackRequest> ToUniTask(this AsyncGPUReadbackRequest asyncOperation, PlayerLoopTiming timing = PlayerLoopTiming.Update, CancellationToken cancellationToken = default(CancellationToken))
 {
     if (asyncOperation.done)
     {
         return(UniTask.FromResult(asyncOperation));
     }
     return(new UniTask <AsyncGPUReadbackRequest>(AsyncGPUReadbackRequestAwaiterConfiguredSource.Create(asyncOperation, timing, cancellationToken, out var token), token));
 }
 public static UniTask <T> ToUniTask <T>(this AsyncOperationHandle <T> handle, IProgress <float> progress = null, PlayerLoopTiming timing = PlayerLoopTiming.Update, CancellationToken cancellationToken = default(CancellationToken))
 {
     if (handle.IsDone)
     {
         return(UniTask.FromResult(handle.Result));
     }
     return(new UniTask <T>(AsyncOperationHandleConfiguredSource <T> .Create(handle, timing, progress, cancellationToken, out var token), token));
 }
 public static UniTask <T> WithCancellation <T>(this AsyncOperationHandle <T> handle, CancellationToken cancellationToken)
 {
     if (handle.IsDone)
     {
         return(UniTask.FromResult(handle.Result));
     }
     return(new UniTask <T>(AsyncOperationHandleConfiguredSource <T> .Create(handle, PlayerLoopTiming.Update, null, cancellationToken, out var token), token));
 }
Example #5
0
 public static UniTask <T> WithCancellation <T>(this AsyncOperationHandle <T> handle, CancellationToken cancellationToken)
 {
     if (handle.IsDone)
     {
         return(UniTask.FromResult(handle.Result));
     }
     return(new UniTask <T>(AsyncOperationHandleWithCancellationSource <T> .Create(handle, cancellationToken, out var token), token));
 }
Example #6
0
        public virtual UniTask <T> ReadAsync(CancellationToken cancellationToken = default(CancellationToken))
        {
            if (this.TryRead(out var item))
            {
                return(UniTask.FromResult(item));
            }

            return(ReadAsyncCore(cancellationToken));
        }
Example #7
0
 public static UniTask <UnityWebRequest> ToUniTask(this UnityWebRequestAsyncOperation asyncOperation, IProgress <float> progress = null, PlayerLoopTiming timing = PlayerLoopTiming.Update, CancellationToken cancellationToken = default(CancellationToken))
 {
     Error.ThrowArgumentNullException(asyncOperation, nameof(asyncOperation));
     if (asyncOperation.isDone)
     {
         return(UniTask.FromResult(asyncOperation.webRequest));
     }
     return(new UniTask <UnityWebRequest>(UnityWebRequestAsyncOperationConfiguredSource.Create(asyncOperation, timing, progress, cancellationToken, out var token), token));
 }
Example #8
0
 public static UniTask <UnityWebRequest> WithCancellation(this UnityWebRequestAsyncOperation asyncOperation, CancellationToken cancellationToken)
 {
     Error.ThrowArgumentNullException(asyncOperation, nameof(asyncOperation));
     if (asyncOperation.isDone)
     {
         return(UniTask.FromResult(asyncOperation.webRequest));
     }
     return(new UniTask <UnityWebRequest>(UnityWebRequestAsyncOperationConfiguredSource.Create(asyncOperation, PlayerLoopTiming.Update, null, cancellationToken, out var token), token));
 }
Example #9
0
 public static UniTask <AssetBundle> WithCancellation(this AssetBundleCreateRequest asyncOperation, CancellationToken cancellationToken)
 {
     Error.ThrowArgumentNullException(asyncOperation, nameof(asyncOperation));
     if (asyncOperation.isDone)
     {
         return(UniTask.FromResult(asyncOperation.assetBundle));
     }
     return(new UniTask <AssetBundle>(AssetBundleCreateRequestConfiguredSource.Create(asyncOperation, PlayerLoopTiming.Update, null, cancellationToken, out var token), token));
 }
Example #10
0
        public static UniTask <T[]> WhenAll <T>(params UniTask <T>[] tasks)
        {
            if (tasks.Length == 0)
            {
                return(UniTask.FromResult(Array.Empty <T>()));
            }

            return(new UniTask <T[]>(new WhenAllPromise <T>(tasks, tasks.Length), 0));
        }
 public static UniTask <UnityEngine.Object[]> AwaitForAllAssets(this AssetBundleRequest asyncOperation, CancellationToken cancellationToken)
 {
     Error.ThrowArgumentNullException(asyncOperation, nameof(asyncOperation));
     if (cancellationToken.IsCancellationRequested)
     {
         return(UniTask.FromCanceled <UnityEngine.Object[]>(cancellationToken));
     }
     if (asyncOperation.isDone)
     {
         return(UniTask.FromResult <UnityEngine.Object[]>(asyncOperation.allAssets));
     }
     return(new UniTask <UnityEngine.Object[]>(AssetBundleRequestAllAssetsWithCancellationSource.Create(asyncOperation, cancellationToken, out var token), token));
 }
Example #12
0
 public static UniTask <UnityEngine.Object[]> AwaitForAllAssets(this AssetBundleRequest asyncOperation, IProgress <float> progress = null, PlayerLoopTiming timing = PlayerLoopTiming.Update, CancellationToken cancellationToken = default(CancellationToken))
 {
     Error.ThrowArgumentNullException(asyncOperation, nameof(asyncOperation));
     if (cancellationToken.IsCancellationRequested)
     {
         return(UniTask.FromCanceled <UnityEngine.Object[]>(cancellationToken));
     }
     if (asyncOperation.isDone)
     {
         return(UniTask.FromResult(asyncOperation.allAssets));
     }
     return(new UniTask <UnityEngine.Object[]>(AssetBundleRequestAllAssetsConfiguredSource.Create(asyncOperation, timing, progress, cancellationToken, out var token), token));
 }
Example #13
0
 public static UniTask <UnityEngine.Object> WithCancellation(this ResourceRequest asyncOperation, CancellationToken cancellationToken)
 {
     Error.ThrowArgumentNullException(asyncOperation, nameof(asyncOperation));
     if (cancellationToken.IsCancellationRequested)
     {
         return(UniTask.FromCanceled <UnityEngine.Object>(cancellationToken));
     }
     if (asyncOperation.isDone)
     {
         return(UniTask.FromResult(asyncOperation.asset));
     }
     return(new UniTask <UnityEngine.Object>(ResourceRequestWithCancellationSource.Create(asyncOperation, cancellationToken, out var token), token));
 }
Example #14
0
 public static UniTask <T> WithCancellation <T>(this AsyncOperationHandle <T> handle, CancellationToken cancellationToken)
 {
     if (cancellationToken.IsCancellationRequested)
     {
         return(UniTask.FromCanceled <T>(cancellationToken));
     }
     if (handle.IsDone)
     {
         if (handle.Status == AsyncOperationStatus.Failed)
         {
             return(UniTask.FromException <T>(handle.OperationException));
         }
         return(UniTask.FromResult(handle.Result));
     }
     return(new UniTask <T>(AsyncOperationHandleWithCancellationSource <T> .Create(handle, cancellationToken, out var token), token));
 }
Example #15
0
 public static UniTask <UnityWebRequest> WithCancellation(this UnityWebRequestAsyncOperation asyncOperation, CancellationToken cancellationToken)
 {
     Error.ThrowArgumentNullException(asyncOperation, nameof(asyncOperation));
     if (cancellationToken.IsCancellationRequested)
     {
         return(UniTask.FromCanceled <UnityWebRequest>(cancellationToken));
     }
     if (asyncOperation.isDone)
     {
         if (asyncOperation.webRequest.IsError())
         {
             return(UniTask.FromException <UnityWebRequest>(new UnityWebRequestException(asyncOperation.webRequest)));
         }
         return(UniTask.FromResult(asyncOperation.webRequest));
     }
     return(new UniTask <UnityWebRequest>(UnityWebRequestAsyncOperationWithCancellationSource.Create(asyncOperation, cancellationToken, out var token), token));
 }