Ejemplo n.º 1
0
#pragma warning restore CS0618
#endif
#endif

#if ENABLE_WWW
#if UNITY_2018_3_OR_NEWER
#pragma warning disable CS0618
#endif

        public static IAwaiter GetAwaiter(this WWW www)
        {
            Error.ThrowArgumentNullException(www, nameof(www));

            var awaiter = new WWWConfiguredAwaiter(www, null, CancellationToken.None);

            if (!awaiter.IsCompleted)
            {
                PlayerLoopHelper.AddAction(PlayerLoopTiming.Update, awaiter);
            }
            return(awaiter);
        }
Ejemplo n.º 2
0
        public static UniTask <UnityEngine.Object> ConfigureAwait(this AssetBundleRequest resourceRequest, IProgress <float> progress = null, PlayerLoopTiming timing = PlayerLoopTiming.Update, CancellationToken cancellation = default(CancellationToken))
        {
            Error.ThrowArgumentNullException(resourceRequest, nameof(resourceRequest));

            var awaiter = new AssetBundleRequestConfiguredAwaiter(resourceRequest, progress, cancellation);

            if (!awaiter.IsCompleted)
            {
                PlayerLoopHelper.AddAction(timing, awaiter);
            }
            return(new UniTask <UnityEngine.Object>(awaiter));
        }
Ejemplo n.º 3
0
        public static UniTask ConfigureAwait(this AsyncOperation asyncOperation, IProgress <float> progress = null, PlayerLoopTiming timing = PlayerLoopTiming.Update, CancellationToken cancellation = default(CancellationToken))
        {
            Error.ThrowArgumentNullException(asyncOperation, nameof(asyncOperation));

            var awaiter = new AsyncOperationConfiguredAwaiter(asyncOperation, progress, cancellation);

            if (!awaiter.IsCompleted)
            {
                PlayerLoopHelper.AddAction(timing, awaiter);
            }
            return(new UniTask(awaiter));
        }
Ejemplo n.º 4
0
        public static UniTask <int> DelayFrame(int delayFrameCount, PlayerLoopTiming delayTiming = PlayerLoopTiming.Update, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (delayFrameCount < 0)
            {
                throw new ArgumentOutOfRangeException("Delay does not allow minus delayFrameCount. delayFrameCount:" + delayFrameCount);
            }

            var source = new DelayFramePromise(delayFrameCount, cancellationToken);

            PlayerLoopHelper.AddAction(delayTiming, source);
            return(source.Task);
        }
        public static UniTask ToUniTask(this JobHandle jobHandle, CancellationToken cancellation = default(CancellationToken))
        {
            var awaiter = new JobHandleAwaiter(jobHandle, cancellation);

            PlayerLoopHelper.AddAction(PlayerLoopTiming.EarlyUpdate, awaiter);
            PlayerLoopHelper.AddAction(PlayerLoopTiming.PreUpdate, awaiter);
            PlayerLoopHelper.AddAction(PlayerLoopTiming.Update, awaiter);
            PlayerLoopHelper.AddAction(PlayerLoopTiming.PreLateUpdate, awaiter);
            PlayerLoopHelper.AddAction(PlayerLoopTiming.PostLateUpdate, awaiter);

            return(new UniTask(awaiter));
        }
Ejemplo n.º 6
0
        public static UniTask Delay(TimeSpan delayTimeSpan, PlayerLoopTiming delayTiming = PlayerLoopTiming.Update, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (delayTimeSpan < TimeSpan.Zero)
            {
                throw new ArgumentOutOfRangeException("Delay does not allow minus delayFrameCount. delayTimeSpan:" + delayTimeSpan);
            }

            var source = new DelayTimeSpanPromise(delayTimeSpan, cancellationToken);

            PlayerLoopHelper.AddAction(delayTiming, source);
            return(source.Task);
        }
        public static UniTask <T> ConfigureAwait <T>(this AsyncOperationHandle <T> asyncOperationHandle, IProgress <float> progress = null, PlayerLoopTiming playerLoopTiming = PlayerLoopTiming.Update, CancellationToken cancellationToken = default)
        {
            Error.ThrowArgumentDefaultException(asyncOperationHandle, nameof(asyncOperationHandle));

            var awaiter = new AsyncOperationHandleConfiguredAwaiter <T>(asyncOperationHandle, progress, cancellationToken);

            if (!((IAwaiter <T>)awaiter).IsCompleted)
            {
                PlayerLoopHelper.AddAction(playerLoopTiming, awaiter);
            }

            return(new UniTask <T>(awaiter));
        }
Ejemplo n.º 8
0
		public static IAwaiter GetAwaiter(this JobHandle jobHandle) {
			var awaiter = new JobHandleAwaiter(jobHandle, CancellationToken.None);

			if (!awaiter.IsCompleted) {
				PlayerLoopHelper.AddAction(PlayerLoopTiming.EarlyUpdate, awaiter);
				PlayerLoopHelper.AddAction(PlayerLoopTiming.PreUpdate, awaiter);
				PlayerLoopHelper.AddAction(PlayerLoopTiming.Update, awaiter);
				PlayerLoopHelper.AddAction(PlayerLoopTiming.PreLateUpdate, awaiter);
				PlayerLoopHelper.AddAction(PlayerLoopTiming.PostLateUpdate, awaiter);
			}

			return awaiter;
		}
Ejemplo n.º 9
0
			public bool MoveNext() {
				if (cancellationToken.IsCancellationRequested) {
					// Call jobHandle.Complete after finished.
					PlayerLoopHelper.AddAction(PlayerLoopTiming.EarlyUpdate, new JobHandleAwaiter(jobHandle, CancellationToken.None, 1));
					InvokeContinuation(AwaiterStatus.Canceled);
					return false;
				}

				if (jobHandle.IsCompleted) {
					jobHandle.Complete();
					InvokeContinuation(AwaiterStatus.Succeeded);
					return false;
				}

				return true;
			}
 public void UnsafeOnCompleted(Action continuation)
 {
     PlayerLoopHelper.AddContinuation(PlayerLoopTiming.Update, continuation);
 }
Ejemplo n.º 11
0
			public void UnsafeOnCompleted(Action continuation) {
				PlayerLoopHelper.AddContinuation(timing, continuation);
			}