Пример #1
0
        /// <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));
        }
Пример #2
0
 /// <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");
     }
 }
Пример #3
0
        /// <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);
        }