Esempio n. 1
0
        private void LoadErrorImmediately(ILoader loader)
        {
            if (loader.error != "timeOut")
            {
                App.logManager.Warn("ResourceManager.LoadErrorImmediately: urlAbsolute:\"" + loader.urlAbsolute + "\" urlRelative:\"" + loader.urlRelative + "\" Message:" + loader.error);
            }

            // 获取LoadItem
            LoadItem item;

            if (_immediateDict.TryGetValue(loader.urlRelative, out item) == false)
            {
                App.logManager.Warn("ResourceManager.LoadErrorImmediately: LoadItem is null: urlAbsolute:\"" + loader.urlAbsolute + "\" urlRelative:\"" + loader.urlRelative);
                return;
            }

            // 设置失败信息
            item.error = loader.error;

            // 移除加载字典
            _immediateDict.Remove(item.url);

            // 执行加载失败回调
            if (item.errorCallback != null)
            {
                item.errorCallback.Invoke(item);
            }

            // 销毁加载器
            loader.Dispose();
        }
Esempio n. 2
0
 /// <summary>
 /// 销毁对象池对象
 /// </summary>
 public void OnPoolDispose()
 {
     _completeCallback = null;
     _errorCallback    = null;
     _loader.Dispose();
     _loader = null;
 }
Esempio n. 3
0
        private void LoadError(ILoader loader)
        {
            if (loader.error != "timeOut")
            {
                App.logManager.Warn("ResourceManager.Load Error: urlAbsolute:\"" + loader.urlAbsolute + "\" urlRelative:\"" + loader.urlRelative + "\" Message:" + loader.error);
                if (loader.error == "loadContentIsNull")
                {
                    // 文件加载失败时删除文件
                    if (App.fileManager.FileExistsPersistent(loader.urlRelative))
                    {
                        App.fileManager.DeleteFilePersistent(loader.urlRelative);
                    }
                }
            }

            // 获取LoadItem
            LoadItem item;

            if (_loadDict.TryGetValue(loader.urlRelative, out item) == false)
            {
                App.logManager.Warn("ResourceManager.Load Error: LoadItem is null: urlAbsolute:\"" + loader.urlAbsolute + "\" urlRelative:\"" + loader.urlRelative);
                return;
            }

            // 设置失败信息
            item.error = loader.error;

            // 移除加载字典
            if (_loadDict.ContainsKey(item.url))
            {
                _loadDict.Remove(item.url);
            }

            // 移除当前加载器字典
            if (_currentLoaders.ContainsKey(item.url))
            {
                _currentLoaders.Remove(item.url);
            }

            // 执行加载失败回调
            if (item.errorCallback != null)
            {
                item.errorCallback.Invoke(item);
            }

            // 派发事件
            DispatchEvent(ResourceManagerEventArgs.ITEM_ERROR, item);

            // 销毁加载器
            loader.Dispose();

            // 继续执行加载
            LoadNext();
        }
Esempio n. 4
0
        private void LoadComplete(ILoader loader)
        {
            // 获取LoadItem
            LoadItem item;

            if (_loadDict.TryGetValue(loader.urlRelative, out item) == false)
            {
                return;
            }

            // 缓存Asset
            IAsset asset = loader.asset;

            if (asset != null)
            {
                // 设置资源唯一ID
                asset.id = item.id;
                // 判断是否要将Asset放入内存
                if (item.cache)
                {
                    App.assetManager.AddAsset(item.id, asset);
                }

                // 判断是否需要写入Persistent目录
                //if (item.save)
                //    App.fileManager.WriteFilePersistentAsync(loader.urlRelative, loader.bytes, false);
            }

            // 移除当前加载器字典
            if (_currentLoaders.ContainsKey(item.url))
            {
                _currentLoaders.Remove(item.url);
            }

            // 加载完毕
            EndLoad(item, asset);

            // 派发事件
            DispatchEvent(ResourceManagerEventArgs.ITEM_COMPLETE, item);

            // 销毁加载器
            loader.Dispose();

            // 继续执行加载
            LoadNext();
        }
Esempio n. 5
0
        private void LoadCompleteImmediately(ILoader loader)
        {
            // 获取LoadItem
            LoadItem item;

            if (_immediateDict.TryGetValue(loader.urlRelative, out item) == false)
            {
                return;
            }

            // 缓存Asset
            IAsset asset = loader.asset;

            if (asset != null)
            {
                // 设置资源唯一ID
                asset.id = item.id;
                // 判断是否要将Asset放入内存
                if (item.cache)
                {
                    App.assetManager.AddAsset(item.id, asset);
                }

                // 判断是否需要写入Persistent目录
                //if (item.save)
                //    App.fileManager.WriteFilePersistentAsync(loader.urlRelative, loader.bytes, false);
            }

            // 填充LoadItem
            item.asset = asset;

            // 执行加载完成回调
            if (item.completeCallback != null)
            {
                item.completeCallback.Invoke(item);
            }

            // 移除当前加载列表
            _immediateDict.Remove(item.url);

            // 销毁加载器
            loader.Dispose();
        }
Esempio n. 6
0
 internal static IEnumerable<Tokens.Base> Scan(ILoader loader, bool dispose)
 {
     while (loader.CheckToken())
         yield return loader.GetToken();
     if (dispose)
         loader.Dispose();
 }
Esempio n. 7
0
 internal static IEnumerable<Events.Base> Parse(ILoader loader, bool dispose)
 {
     while (loader.CheckEvent())
         yield return loader.GetEvent();
     if (dispose)
         loader.Dispose();
 }
Esempio n. 8
0
 internal static IEnumerable<Nodes.Base> ComposeAll(ILoader loader, bool dispose)
 {
     while (loader.CheckNode())
         yield return loader.GetNode();
     if (dispose)
         loader.Dispose();
 }
Esempio n. 9
0
 protected override void OnDeactivate(bool close)
 {
     base.OnDeactivate(close);
     loader.Dispose();
 }
Esempio n. 10
0
 public void Dispose()
 {
     _loader.Dispose();
     _container.Dispose();
 }
Esempio n. 11
0
 //Recycle loader here
 void RecycleLoader(ILoader loader)
 {
     loader.Dispose();
 }