Ejemplo n.º 1
0
        public static UniTask <T> FromCanceled <T>(CancellationToken token)
        {
            var promise = new UniTaskCompletionSource <T>();

            promise.TrySetException(new OperationCanceledException(token));
            promise.MarkHandled();
            return(new UniTask <T>(promise));
        }
Ejemplo n.º 2
0
        public static UniTask <T> FromException <T>(Exception ex)
        {
            var promise = new UniTaskCompletionSource <T>();

            promise.TrySetException(ex);
            promise.MarkHandled();
            return(new UniTask <T>(promise));
        }
Ejemplo n.º 3
0
            static CanceledUniTaskCache()
            {
                var promise = new UniTaskCompletionSource <T>();

                promise.TrySetCanceled();
                promise.MarkHandled();
                Task = new UniTask <T>(promise);
            }
		public static (UniTask, CancellationTokenRegistration) ToUniTask(this CancellationToken cts) {
			if (cts.IsCancellationRequested) {
				return (UniTask.FromCanceled(cts), default(CancellationTokenRegistration));
			}

			var promise = new UniTaskCompletionSource<AsyncUnit>();
			return (promise.Task, cts.RegisterWithoutCaptureExecutionContext(cancellationTokenCallback, promise));
		}
Ejemplo n.º 5
0
 // Addressable Assets System
 public static UniTask <T> LoadAddressables <T>(object key) where T : class
 {
     return(new UniTask <T>(() =>
     {
         var completionSource = new UniTaskCompletionSource <T>();
         Addressables.LoadAsset <T>(key).Completed += x => completionSource.TrySetResult(x.Result);
         return completionSource.Task;
     }));
 }
Ejemplo n.º 6
0
 // Resources.LoadAsync
 public static UniTask <T> LoadResources <T>(string path) where T : UnityEngine.Object
 {
     return(new UniTask <T>(() =>
     {
         var completionSource = new UniTaskCompletionSource <T>();
         var loadTask = Resources.LoadAsync <T>(path);
         loadTask.completed += x => completionSource.TrySetResult(loadTask.asset as T);
         return completionSource.Task;
     }));
 }
Ejemplo n.º 7
0
            public FirstValueToUniTaskObserver(UniTaskCompletionSource <T> promise, SingleAssignmentDisposable disposable, CancellationToken cancellationToken)
            {
                this.promise           = promise;
                this.disposable        = disposable;
                this.cancellationToken = cancellationToken;

                if (this.cancellationToken.CanBeCanceled)
                {
                    this.registration = this.cancellationToken.RegisterWithoutCaptureExecutionContext(callback, this);
                }
            }
Ejemplo n.º 8
0
        public static UniTask <T> ToUniTask <T>(this IObservable <T> source, CancellationToken cancellationToken = default(CancellationToken), bool useFirstValue = false)
        {
            var promise    = new UniTaskCompletionSource <T>();
            var disposable = new SingleAssignmentDisposable();

            var observer = useFirstValue
                ? (IObserver <T>) new FirstValueToUniTaskObserver <T>(promise, disposable, cancellationToken)
                : (IObserver <T>) new ToUniTaskObserver <T>(promise, disposable, cancellationToken);

            try
            {
                disposable.Disposable = source.Subscribe(observer);
            }
            catch (Exception ex)
            {
                promise.TrySetException(ex);
            }

            return(promise.Task);
        }
Ejemplo n.º 9
0
		public static UniTask FromException(Exception ex) {
			var promise = new UniTaskCompletionSource<AsyncUnit>();
			promise.TrySetException(ex);
			promise.MarkHandled();
			return new UniTask(promise);
		}