Exemplo n.º 1
0
        internal static void UpdateBundles()
        {
            if (MAX_BUNDLE_LOAD_SIZE_PERFREME > 0)
            {
                if (_bundles2Load.Count > 0 && _bundlesByLoading.Count < MAX_BUNDLE_LOAD_SIZE_PERFREME)
                {
                    for (int i = 0; i < Math.Min(MAX_BUNDLE_LOAD_SIZE_PERFREME - _bundlesByLoading.Count, _bundles2Load.Count); ++i)
                    {
                        var item = _bundles2Load[i];
                        if (item.loadState == LoadState.Init)
                        {
                            item.Load();
                            _bundlesByLoading.Add(item);
                            _bundles2Load.RemoveAt(i);
                            --i;
                        }
                    }
                }

                for (int i = 0; i < _bundlesByLoading.Count; ++i)
                {
                    var item = _bundlesByLoading[i];
                    if (item.loadState == LoadState.Loaded || item.loadState == LoadState.Unload)
                    {
                        _bundlesByLoading.RemoveAt(i);
                        --i;
                    }
                }
            }

            for (int i = 0; i < _bundleRequests.Count; i++)
            {
                BundleRequest item = _bundleRequests[i];
                if (item.Update() || !item.IsUnused())
                {
                    continue;
                }
                _unusedBundles.Add(item);
                _bundleRequests.RemoveAt(i);
                --i;
            }

            for (var i = 0; i < _unusedBundles.Count; i++)
            {
                var item = _unusedBundles[i];
                _bundles.Remove(item.url);
                UnloadDependencies(item);
                item.Unload();
                Log("UnloadBundle: " + item.url);
            }

            _unusedBundles.Clear();
        }