#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); }
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)); }
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)); }
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)); }
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)); }
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; }
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); }
public void UnsafeOnCompleted(Action continuation) { PlayerLoopHelper.AddContinuation(timing, continuation); }