private void UpdateAssetBundleRequest(BundlesRequestNode bundlesRequest)
 {
     if (!this.TryCompleteLoading(bundlesRequest))
     {
         base.ScheduleEvent <PrepareBundleToLoadEvent>(bundlesRequest);
     }
 }
        public void MarkLoaded(LoadCompleteEvent e, PreparedLoaderNode node, [JoinBy(typeof(AssetGroupComponent))] BundlesRequestNode bundlesRequestNode)
        {
            string      bundleName  = node.assetBundleLoading.Info.BundleName;
            AssetBundle assetBundle = node.assetBundleLoading.AssetBundleDiskCacheRequest.AssetBundle;

            bundlesRequestNode.assetBundlesLoadData.LoadingBundles.Remove(node.assetBundleLoading.Info);
            bundlesRequestNode.assetBundlesLoadData.LoadedBundles.Add(node.assetBundleLoading.Info, assetBundle);
        }
 private void UpdateBundleRequests(ICollection <BundlesRequestNode> bundlesRequestList)
 {
     if (bundlesRequestList.Count != 0)
     {
         List <BundlesRequestNode> list = this.Sort(bundlesRequestList);
         for (int i = list.Count - 1; i >= 0; i--)
         {
             BundlesRequestNode bundlesRequest = list[i];
             this.UpdateAssetBundleRequest(bundlesRequest);
         }
     }
 }
 public void PrepareBundleToLoad(PrepareBundleToLoadEvent e, BundlesRequestNode bundlesRequest, [JoinAll] ICollection <IdleLoadingChannelNode> loadingChannels, [JoinAll] SingleNode <BaseUrlComponent> baseUrlNode)
 {
     foreach (IdleLoadingChannelNode node in loadingChannels)
     {
         AssetBundleInfo info = this.SelectDependBundleToLoad(bundlesRequest);
         if (info == null)
         {
             break;
         }
         this.PrepareLoadingChannel(info, baseUrlNode.component.Url, node, bundlesRequest.Entity);
     }
 }
 private bool TryCompleteLoading(BundlesRequestNode bundlesRequest)
 {
     if (!bundlesRequest.assetBundlesLoadData.Loaded)
     {
         if (!this.IsLoadingComplete(bundlesRequest))
         {
             return(false);
         }
         bundlesRequest.assetBundlesLoadData.Loaded = true;
         base.ScheduleEvent <AssetBundlesLoadedEvent>(bundlesRequest);
     }
     return(true);
 }
        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 bool IsLoadingComplete(BundlesRequestNode bundle) =>
 (bundle.assetBundlesLoadData.BundlesToLoad.Count == 0) && (bundle.assetBundlesLoadData.LoadingBundles.Count == 0);