public override AssetRequest <TAsset> LoadAsync <TAsset>(string deviceList, ref ContentManifest.AssetEntry entry, AssetLoadedHandler <TAsset> handler = null) { gcsAccessTokenService = Service.Get <IGcsAccessTokenService>(); string bundlePath = UriUtil.Combine(baseUri, entry.Key); AssetBundleWwwWrapper assetBundleWwwWrapper = new AssetBundleWwwWrapper(bundlePath, gcsAccessTokenService); AsyncBundleWwwRequest <TAsset> result = new AsyncBundleWwwRequest <TAsset>(entry.Key, assetBundleWwwWrapper); CoroutineRunner.StartPersistent(waitForBundleToLoad(assetBundleWwwWrapper, handler, entry.IsCacheOnly), this, "Local_waitForBundleToLoad"); return(result); }
public override AssetRequest <TAsset> LoadAsync <TAsset>(string deviceList, ref ContentManifest.AssetEntry entry, AssetLoadedHandler <TAsset> handler = null) { string bundlePath = UriUtil.Combine(baseUri, entry.Key); AssetBundleWwwWrapper assetBundleWwwWrapper = new AssetBundleWwwWrapper(bundlePath, gcsAccessTokenService); AsyncBundleWwwRequest <TAsset> result = new AsyncBundleWwwRequest <TAsset>(entry.Key, assetBundleWwwWrapper); uint result2 = 0u; if (entry.UserData != null && entry.UserData is ContentManifest.BundleEntry && !uint.TryParse(((ContentManifest.BundleEntry)entry.UserData).Crc, out result2)) { result2 = 0u; } CoroutineRunner.StartPersistent(waitForBundleToLoad(assetBundleWwwWrapper, result2, handler), this, "waitForBundleToLoad"); return(result); }
private IEnumerator waitForBundleToLoad <TAsset>(AssetBundleWwwWrapper bundleRequest, AssetLoadedHandler <TAsset> handler, bool cacheOnly) where TAsset : class { bundleRequest.LoadFromDownload(bundleRequest.BundlePath); Service.Get <LoadingController>().RegisterDownload(bundleRequest.WebRequest); yield return(bundleRequest.Send()); Service.Get <LoadingController>().UnRegisterDownload(bundleRequest.WebRequest); if (handler != null) { AssetBundle assetBundle = null; if (!cacheOnly) { assetBundle = bundleRequest.AssetBundle; } TAsset asset = null; if (assetBundle != null) { asset = (TAsset)(object)assetBundle; } handler(bundleRequest.BundlePath, asset); } yield return(null); }
private IEnumerator waitForBundleToLoad <TAsset>(AssetBundleWwwWrapper bundleRequestWrapper, uint crc, AssetLoadedHandler <TAsset> handler) where TAsset : class { CPipeManifestResponse cpipeManifestResponse = new CPipeManifestResponse(); yield return(cpipeManifestService.LookupAssetUrl(cpipeManifestResponse, bundleRequestWrapper.BundlePath)); if (string.IsNullOrEmpty(cpipeManifestResponse.FullAssetUrl)) { throw new Exception($"Bundle \"{bundleRequestWrapper.BundlePath}\" NOT FOUND in CPipe manifest."); } while (!Caching.ready) { yield return(null); } bundleRequestWrapper.LoadFromCacheOrDownload(cpipeManifestResponse.FullAssetUrl, crc); Service.Get <LoadingController>().RegisterDownload(bundleRequestWrapper.WebRequest); yield return(bundleRequestWrapper.Send()); Service.Get <LoadingController>().UnRegisterDownload(bundleRequestWrapper.WebRequest); if (DelayLoading) { yield return(null); yield return(null); } for (int i = 0; i < 3; i++) { if (bundleRequestWrapper.WebRequest.isNetworkError) { Log.LogErrorFormatted(this, "Retry count {0}. Failed to download bundle {1} with error: {2}", i + 1, bundleRequestWrapper.BundlePath, bundleRequestWrapper.WebRequest.error); } else { if (!(bundleRequestWrapper.AssetBundle == null)) { break; } Log.LogErrorFormatted(this, "Retry count {0}. Downloaded bundle was null", i + 1); } bundleRequestWrapper.LoadFromCacheOrDownload(cpipeManifestResponse.FullAssetUrl, crc); string message = $"Retry bundle load with expected CRC {crc}: {bundleRequestWrapper.BundlePath}"; Crittercism.LeaveBreadcrumb(message); Service.Get <LoadingController>().RegisterDownload(bundleRequestWrapper.WebRequest); yield return(bundleRequestWrapper.Send()); Service.Get <LoadingController>().UnRegisterDownload(bundleRequestWrapper.WebRequest); } if (bundleRequestWrapper.AssetBundle != null) { string breadcrumb = $"Loaded bundle with expected CRC {crc}: {bundleRequestWrapper.BundlePath}"; Crittercism.LeaveBreadcrumb(breadcrumb); } else { string breadcrumb = $"Failed to load bundle with expected CRC {crc}: {bundleRequestWrapper.BundlePath}"; Crittercism.LeaveBreadcrumb(breadcrumb); } if (handler != null) { TAsset asset = null; if (bundleRequestWrapper.AssetBundle != null) { asset = (TAsset)(object)bundleRequestWrapper.AssetBundle; } handler(bundleRequestWrapper.BundlePath, asset); } bundleRequestWrapper.IsComplete = true; bundleRequestWrapper.CacheAndDispose(); }