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

            if (!handle.IsValid())
            {
                // autoReleaseHandle:true handle is invalid(immediately internal handle == null) so return completed.
                return(UniTask.CompletedTask);
            }

            if (handle.IsDone)
            {
                if (handle.Status == AsyncOperationStatus.Failed)
                {
                    return(UniTask.FromException(handle.OperationException));
                }
                return(UniTask.CompletedTask);
            }

            return(new UniTask(AsyncOperationHandleConfiguredSource.Create(handle, timing, progress, 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 (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));
        }
 public static UniTask ToUniTask(this AsyncOperationHandle handle, IProgress <float> progress = null, PlayerLoopTiming timing = PlayerLoopTiming.Update, CancellationToken cancellationToken = default(CancellationToken))
 {
     if (handle.IsDone)
     {
         return(UniTask.CompletedTask);
     }
     return(new UniTask(AsyncOperationHandleConfiguredSource.Create(handle, timing, progress, cancellationToken, out var token), token));
 }
 public static UniTask WithCancellation(this AsyncOperationHandle handle, CancellationToken cancellationToken)
 {
     if (handle.IsDone)
     {
         return(UniTask.CompletedTask);
     }
     return(new UniTask(AsyncOperationHandleConfiguredSource.Create(handle, PlayerLoopTiming.Update, null, 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));
 }
Пример #6
0
 public static UniTask <T> ToUniTask <T>(this AsyncOperationHandle <T> handle, IProgress <float> progress = null, PlayerLoopTiming timing = PlayerLoopTiming.Update, CancellationToken cancellation = default(CancellationToken))
 {
     if (handle.IsDone)
     {
         return(UniTask.FromResult(handle.Result));
     }
     return(new UniTask <T>(AsyncOperationHandleConfiguredSource <T> .Create(handle, timing, progress, cancellation, out var token), token));
 }
Пример #7
0
        public static UniTask ToUniTask(this AsyncOperationHandle handle, IProgress <float> progress = null, PlayerLoopTiming timing = PlayerLoopTiming.Update, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (cancellationToken.IsCancellationRequested)
            {
                return(UniTask.FromCanceled(cancellationToken));
            }
            if (handle.IsDone)
            {
                if (handle.Status == AsyncOperationStatus.Failed)
                {
                    return(UniTask.FromException(handle.OperationException));
                }
                return(UniTask.CompletedTask);
            }

            return(new UniTask(AsyncOperationHandleConfiguredSource.Create(handle, timing, progress, cancellationToken, out var token), token));
        }