private void PrepareAssetBundlesRequest(Entity request, HashSet <AssetBundleInfo> bundleInfos) { request.AddComponent(new AssetGroupComponent(request)); request.AddComponent <ResourceLoadStatComponent>(); AssetBundlesLoadDataComponent component = new AssetBundlesLoadDataComponent { AllBundles = bundleInfos, BundlesToLoad = new List <AssetBundleInfo>(bundleInfos), LoadingBundles = new HashSet <AssetBundleInfo>(), LoadedBundles = new Dictionary <AssetBundleInfo, AssetBundle>() }; request.AddComponent(component); }
private AssetBundleInfo SelectDependBundleToLoad(BundlesRequestNode bundlesRequest) { AssetBundlesLoadDataComponent assetBundlesLoadData = bundlesRequest.assetBundlesLoadData; AssetBundleInfo info = null; List <AssetBundleInfo> list = new List <AssetBundleInfo>(); for (int i = 0; i < assetBundlesLoadData.BundlesToLoad.Count; i++) { AssetBundleInfo info2 = assetBundlesLoadData.BundlesToLoad[i]; if (AssetBundlesStorage.IsStored(info2)) { list.Add(info2); } else if (!AssetBundlesStorage.IsLoading(info2)) { if (i < (assetBundlesLoadData.BundlesToLoad.Count - 1)) { assetBundlesLoadData.BundlesToLoad.Remove(info2); assetBundlesLoadData.LoadingBundles.Add(info2); info = info2; } else if ((assetBundlesLoadData.BundlesToLoad.Count == 1) && (assetBundlesLoadData.LoadingBundles.Count == 0)) { assetBundlesLoadData.BundlesToLoad.Remove(info2); assetBundlesLoadData.LoadingBundles.Add(info2); info = info2; } break; } } foreach (AssetBundleInfo info3 in list) { assetBundlesLoadData.BundlesToLoad.Remove(info3); Dictionary <AssetBundleInfo, AssetBundle> loadedBundles = assetBundlesLoadData.LoadedBundles; if (!loadedBundles.ContainsKey(info3)) { loadedBundles.Add(info3, AssetBundlesStorage.Get(info3)); } } return(info); }
private static AsyncLoadAssetFromBundleRequest CreateLoadAssetRequest(AssetReference assetReference, AssetBundleDatabaseComponent db, AssetBundlesLoadDataComponent assetBundlesLoadData) { AsyncLoadAssetFromBundleRequest request; AssetInfo assetInfo = db.AssetBundleDatabase.GetAssetInfo(assetReference.AssetGuid); try { request = new AsyncLoadAssetFromBundleRequest(assetBundlesLoadData.LoadedBundles[assetInfo.AssetBundleInfo], assetInfo.ObjectName, assetInfo.AssetType); } catch (KeyNotFoundException exception) { throw new Exception("Bundle not found in LoadedBundles: " + assetInfo.AssetBundleInfo.BundleName + ", ref=" + assetReference.AssetGuid, exception); } return(request); }