private bool CreateAssetPackModule( string assetPackName, AssetPack assetPack, DirectoryInfo assetPackDirectoryInfo) { var androidManifestXmlPath = Path.Combine(assetPackDirectoryInfo.FullName, AndroidManifestFileName); var assetPackManifestXDocument = CreateAssetPackManifestXDocument(assetPackName, assetPack.DeliveryMode); assetPackManifestXDocument.Save(androidManifestXmlPath); // Use aapt2 link to make a bundletool compatible module var sourceDirectoryInfo = assetPackDirectoryInfo.CreateSubdirectory("source"); var aaptErrorMessage = _androidAssetPackagingTool.Link(androidManifestXmlPath, sourceDirectoryInfo.FullName); if (aaptErrorMessage != null) { DisplayBuildError("aapt2 link " + assetPackName, aaptErrorMessage); return(false); } var destinationDirectoryInfo = GetDestinationSubdirectory(assetPackDirectoryInfo); ArrangeFilesForAssetPack(sourceDirectoryInfo, destinationDirectoryInfo); // Copy all assets to an "assets" subdirectory in the destination folder. var destinationAssetsDirectory = destinationDirectoryInfo.CreateSubdirectory(AssetsDirectoryName); if (assetPack.AssetBundleFilePath != null) { // Copy AssetBundle files into the module's "assets" folder, inside an "assetpack" folder. var outputDirectory = destinationAssetsDirectory.CreateSubdirectory(AssetPackFolder).FullName; File.Copy(assetPack.AssetBundleFilePath, Path.Combine(outputDirectory, assetPackName)); } else if (assetPack.CompressionFormatToAssetBundleFilePath != null) { // Copy the AssetBundle files into the module's "assets" folder, inside an "assetpack#tcf_xxx" folder. foreach (var compressionAndFilePath in assetPack.CompressionFormatToAssetBundleFilePath) { var targetedAssetsFolderName = AssetPackFolder + TextureTargetingTools.GetTargetingSuffix(compressionAndFilePath.Key); var outputDirectory = destinationAssetsDirectory.CreateSubdirectory(targetedAssetsFolderName); File.Copy(compressionAndFilePath.Value, Path.Combine(outputDirectory.FullName, assetPackName)); } } else if (assetPack.AssetPackDirectoryPath != null) { var sourceAssetsDirectory = new DirectoryInfo(assetPack.AssetPackDirectoryPath); if (!sourceAssetsDirectory.Exists) { // TODO: check this earlier. DisplayBuildError("Missing directory for " + assetPackName, sourceAssetsDirectory.FullName); return(false); } // Copy asset pack files into the module's "assets" folder, inside an "assetpack" folder. var outputDirectory = destinationAssetsDirectory.CreateSubdirectory(AssetPackFolder); CopyFilesRecursively(sourceAssetsDirectory, outputDirectory); } else { throw new InvalidOperationException("Missing asset pack files: " + assetPackName); } return(true); }
private static string GetCompressionFormatSuffix(MobileTextureSubtarget subtarget) { var format = GetCompressionFormat(subtarget); return(TextureTargetingTools.GetTargetingSuffix(format)); }
private string CreateAssetPackModule( string assetPackName, AssetPack assetPack, DirectoryInfo assetPackDirectoryInfo) { var aaptErrorMessage = CreateAssetPackWithManifest(assetPackDirectoryInfo, assetPackName, assetPack.DeliveryMode); if (aaptErrorMessage != null) { // Already displayed the error. return(aaptErrorMessage); } // Copy all assets to an "assets" subdirectory in the destination folder. var destinationAssetsDirectory = GetDestinationSubdirectory(assetPackDirectoryInfo).CreateSubdirectory(AssetsDirectoryName); if (assetPack.AssetBundleFilePath != null) { // Copy AssetBundle files into the module's "assets" folder, inside an "assetpack" folder. var outputDirectory = destinationAssetsDirectory.CreateSubdirectory(AssetPackFolder).FullName; File.Copy(assetPack.AssetBundleFilePath, Path.Combine(outputDirectory, assetPackName)); } else if (assetPack.CompressionFormatToAssetBundleFilePath != null) { // Copy the AssetBundle files into the module's "assets" folder, inside an "assetpack#tcf_xxx" folder. foreach (var compressionAndFilePath in assetPack.CompressionFormatToAssetBundleFilePath) { var targetedAssetsFolderName = AssetPackFolder + TextureTargetingTools.GetTargetingSuffix(compressionAndFilePath.Key); var outputDirectory = destinationAssetsDirectory.CreateSubdirectory(targetedAssetsFolderName); File.Copy(compressionAndFilePath.Value, Path.Combine(outputDirectory.FullName, assetPackName)); } } else if (assetPack.AssetPackDirectoryPath != null) { var sourceAssetsDirectory = new DirectoryInfo(assetPack.AssetPackDirectoryPath); if (!sourceAssetsDirectory.Exists) { // TODO: check this earlier. return(DisplayBuildError("Missing directory for " + assetPackName, sourceAssetsDirectory.FullName)); } // Copy asset pack files into the module's "assets" folder, inside an "assetpack" folder. var outputDirectory = destinationAssetsDirectory.CreateSubdirectory(AssetPackFolder); CopyFilesRecursively(sourceAssetsDirectory, outputDirectory); } else if (assetPack.CompressionFormatToAssetPackDirectoryPath != null) { // Copy asset pack files into the module's "assets" folder, inside an "assetpack#tcf_xxx" folder. foreach (var compressionAndDirectoryPath in assetPack.CompressionFormatToAssetPackDirectoryPath) { var sourceAssetsDirectory = new DirectoryInfo(compressionAndDirectoryPath.Value); if (!sourceAssetsDirectory.Exists) { // TODO: check this earlier. return(DisplayBuildError( "Missing directory for " + assetPackName, sourceAssetsDirectory.FullName)); } var targetedAssetsFolderName = AssetPackFolder + TextureTargetingTools.GetTargetingSuffix(compressionAndDirectoryPath.Key); var outputDirectory = destinationAssetsDirectory.CreateSubdirectory(targetedAssetsFolderName); CopyFilesRecursively(sourceAssetsDirectory, outputDirectory); } } else { throw new InvalidOperationException("Missing asset pack files: " + assetPackName); } return(null); }