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)); }
public static IUniTaskSource <UnityEngine.Object[]> Create(AssetBundleRequest asyncOperation, PlayerLoopTiming timing, IProgress <float> progress, CancellationToken cancellationToken, out short token) { if (cancellationToken.IsCancellationRequested) { return(AutoResetUniTaskCompletionSource <UnityEngine.Object[]> .CreateFromCanceled(cancellationToken, out token)); } if (!pool.TryPop(out var result)) { result = new AssetBundleRequestAllAssetsConfiguredSource(); } result.asyncOperation = asyncOperation; result.progress = progress; result.cancellationToken = cancellationToken; TaskTracker.TrackActiveTask(result, 3); PlayerLoopHelper.AddAction(timing, result); token = result.core.Version; return(result); }