예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        /// <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);
        }