/// <summary> /// Загружает пакет ресурсов в память /// </summary> /// <param name="parAssetPack">Пакет ресурсов</param> /// <param name="parCustomAssetBuilder">Определенный строитель-загрузчик</param> /// <param name="parAssetPackName">Имя пакета ресурсов</param> public void LoadAssetPack(AssetPack parAssetPack, AssetDataAbstractBuilder parCustomAssetBuilder = null, string parAssetPackName = null) { AssetDataAbstractBuilder actualAssetDataBuilder = parCustomAssetBuilder ?? StandardAssetBuilder; //проверим, если этот пакет уже загружен parAssetPackName = parAssetPackName ?? AvailableAssetPacks.FirstOrDefault(parX => parX.Value == parAssetPack).Key; if (LoadedAssetPacks.ContainsKey(parAssetPackName)) { //выгрузим его сначала UnloadAssetPack(LoadedAssetPacks[parAssetPackName]); Console.WriteLine("Unloading asset pack because it has been already loaded in memory"); } //а затем снова загрузим Dictionary <string, AssetDataParent> assetPackData = new Dictionary <string, AssetDataParent>(); foreach (var contentData in parAssetPack.Content) { assetPackData.Add(contentData.Key, actualAssetDataBuilder.LoadAssetData <AssetDataParent>(contentData.Value)); Console.WriteLine($"Loaded data {contentData.Key} in asset pack {parAssetPackName}"); } LoadedAssetPacks.Add(parAssetPackName, new AssetPackLoadedData(assetPackData)); }
/// <summary> /// Загружает пакет ресурсов в память /// </summary> /// <param name="parAssetPackName">Имя пакета ресурсов</param> /// <param name="parCustomAssetBuilder">Определенный строитель-загрузчик</param> /// <exception cref="ArgumentException">Пакет ресурсов не был найден</exception> public void LoadAssetPack(string parAssetPackName, AssetDataAbstractBuilder parCustomAssetBuilder = null) { if (AvailableAssetPacks.TryGetValue(parAssetPackName, out AssetPack assetPack)) { LoadAssetPack(assetPack, parCustomAssetBuilder, parAssetPackName); } else { throw new ArgumentException("Asset pack with the specified name was not found in database"); } }
/// <summary> /// Получить метаданные об ассете /// </summary> /// <param name="parAssetPackName">Имя пакета ресурсов нужного ассета</param> /// <param name="parAssetName">Имя нужного ассета</param> /// <returns></returns> public AssetMetadata GetAssetMetadata(string parAssetPackName, string parAssetName) { if (AvailableAssetPacks.TryGetValue(parAssetPackName, out var assetPack)) { if (assetPack.Content.TryGetValue(parAssetName, out var targetAsset)) { return(targetAsset); } } //не найден return(null); }