public static AssetPackConfig Deserialize(SerializableAssetPackConfig config) { var assetPackConfig = new AssetPackConfig { DefaultTextureCompressionFormat = config.DefaultTextureCompressionFormat }; foreach (var multiTargetingAssetBundle in config.assetBundles) { var assetBundles = multiTargetingAssetBundle.assetBundles; if (assetBundles.Count == 0) { continue; } // TODO: consider checking the folder name for "#tcf". if (assetBundles.Count == 1 && assetBundles[0].TextureCompressionFormat == TextureCompressionFormat.Default) { assetPackConfig.AddAssetBundle(assetBundles[0].path, multiTargetingAssetBundle.DeliveryMode); continue; } var dictionary = assetBundles.ToDictionary(item => item.TextureCompressionFormat, item => item.path); assetPackConfig.AddAssetBundles(dictionary, multiTargetingAssetBundle.DeliveryMode); } foreach (var pack in config.assetPacks) { assetPackConfig.AddAssetsFolder(pack.name, pack.path, pack.DeliveryMode); } return(assetPackConfig); }
public static SerializableAssetPackConfig Serialize(AssetPackConfig assetPackConfig) { var config = new SerializableAssetPackConfig { DefaultTextureCompressionFormat = assetPackConfig.DefaultTextureCompressionFormat }; foreach (var assetPackEntry in assetPackConfig.AssetPacks) { var name = assetPackEntry.Key; var assetPack = assetPackEntry.Value; if (assetPack.AssetBundleFilePath != null) { var assetBundle = new SerializableMultiTargetingAssetBundle { name = name, DeliveryMode = assetPack.DeliveryMode }; assetBundle.assetBundles.Add(new SerializableAssetBundle { path = assetPack.AssetBundleFilePath, TextureCompressionFormat = TextureCompressionFormat.Default }); config.assetBundles.Add(assetBundle); } if (assetPack.CompressionFormatToAssetBundleFilePath != null) { var assetBundle = new SerializableMultiTargetingAssetBundle { name = name, DeliveryMode = assetPack.DeliveryMode }; foreach (var compressionEntry in assetPack.CompressionFormatToAssetBundleFilePath) { assetBundle.assetBundles.Add(new SerializableAssetBundle { path = compressionEntry.Value, TextureCompressionFormat = compressionEntry.Key }); } config.assetBundles.Add(assetBundle); } if (assetPack.AssetPackDirectoryPath != null) { config.assetPacks.Add(new SerializableAssetPack { name = name, DeliveryMode = assetPack.DeliveryMode, path = assetPack.AssetPackDirectoryPath }); } } return(config); }
/// <summary> /// Creates an AssetPackConfig from the specified SerializableAssetPackConfig, validating its fields /// in the process. Note: AssetBundle names are interpreted from the AssetBundle path rather than /// the specified names. /// </summary> public static AssetPackConfig Deserialize(SerializableAssetPackConfig config) { var assetPackConfig = new AssetPackConfig { DefaultTextureCompressionFormat = config.DefaultTextureCompressionFormat, SplitBaseModuleAssets = config.splitBaseModuleAssets }; foreach (var multiTargetingAssetBundle in config.assetBundles) { var assetBundles = multiTargetingAssetBundle.assetBundles; if (assetBundles.Count == 0) { continue; } // TODO: consider checking the folder name for "#tcf". if (assetBundles.Count == 1 && assetBundles[0].TextureCompressionFormat == TextureCompressionFormat.Default ) { assetPackConfig.AddAssetBundle(assetBundles[0].path, multiTargetingAssetBundle.DeliveryMode); continue; } var dictionaryTextureCompression = assetBundles .ToDictionary(item => item.TextureCompressionFormat, item => item.path); if (dictionaryTextureCompression.Count != 0) { assetPackConfig.AddAssetBundles(dictionaryTextureCompression, multiTargetingAssetBundle.DeliveryMode); } } foreach (var pack in config.assetPacks) { assetPackConfig.AddAssetsFolder(pack.name, pack.path, pack.DeliveryMode); } foreach (var pack in config.targetedAssetPacks) { var compressionFormatToAssetPackDirectoryPath = pack.paths .ToDictionary(item => item.TextureCompressionFormat, item => item.path); if (compressionFormatToAssetPackDirectoryPath.Count != 0) { assetPackConfig.AddAssetsFolders( pack.name, compressionFormatToAssetPackDirectoryPath, pack.DeliveryMode); } } return(assetPackConfig); }