public Asset(string path, AssetType type, AssetPack pack) { this.path = path; this.type = type; this.pack = pack; this.dispatcher = new Dispatcher(this); }
private void _RetainAssetPack(AssetPack pack) { pack.Retain(); lock (this.packs) { this.packs.Add(pack.Path, pack); } }
private void _ReleaseAssetPack(AssetPack pack) { lock (this.packs) { this.packs.Remove(pack.Path); } pack.Release(); }
private AssetPack _GetAssetPack(string path, bool checkDependency, AssetType assetType) { AssetPack pack = null; lock (this.packs) { var loadType = this.info._LoadType; var packInfo = _FindAssetPackInfo(path); if (null == packInfo) { var assetInfo = _FindAssetInfo(path); if (null != assetInfo) { path = assetInfo.PackPath; // Override path with pack path packInfo = _FindAssetPackInfo(path); if (null == packInfo) { Logger <IAssetManager> .E("!IMPOSSIBLE!"); } } else { packInfo = new AssetPackInfo { Type = AssetPackType.FLAT, }; if (File.Exists(PathUtility.ComposeDataPath(path))) // Check if it exists but not managed by AssetManager { loadType = AssetPackLoadType.PERSISTENTDATAPATH; } else if (AssetType.SCENE == assetType) // Unity scene type { loadType = AssetPackLoadType.INTERNALSCENE; } else { loadType = AssetPackLoadType.RESOURCES; if (AssetType.SPRITEATLAS == assetType) // Resources sprite atlas { packInfo.Type = AssetPackType.BUNDLE; } } this.info.Packs.Add(path, packInfo); } } if (!this.packs.TryGetValue(path, out pack)) { pack = new AssetPack(this, path, packInfo.Type, (path.StartsWith("http") ? AssetPackLoadType.REMOTE : loadType), checkDependency); _RetainAssetPack(pack); } } return(pack); }