/// <summary> /// Processes a single item. /// </summary> /// <param name="input">The input to process.</param> /// <returns>The output of the process.</returns> public override IAssetFile Process(IAssetFile input) { try { // Get the content var content = input.Content.AsString(); // Attempt to extract headers, if none simply return the input int endOffset; var header = AssetHeader.FromString(content, out endOffset); if (header == null) { return(input); } //dynamic head = header; //Console.WriteLine("layout: " + (string)head.layout); //Console.WriteLine("title: " + (string)head.title); // Return processed output return(AssetOutputFile.Create( from: input, content: content.Remove(0, endOffset).TrimStart(), meta: header )); } catch (Exception ex) { // We didn't manage to create anything Tracing.Error("Header", ex); return(null); } }
public static void ClassInitialize(TestContext context) { var file = @".\Data\bundle_5.1.unity3d"; var abr = new AssestFile(file); _header = abr.AssetHeader; }
public static AssetOutputFile Create(IAssetFile from, byte[] content, AssetHeader meta = null, string extension = null) { var name = extension == null ? new FileInfo(from.FullName) : new FileInfo(Path.ChangeExtension(from.FullName, extension)); var head = meta == null ? from.Meta : meta; return new AssetOutputFile( from.Project, name, head, content ); }
static void CreateAssetHeaders(AssetBundleManifest manifest, string path) { AssetHeader header = null; string[] dependencies = null; string urlPath = SceneLoader.ASSET_SERVER + path; foreach (var assetBundleName in manifest.GetAllAssetBundles()) { // Setup header info header = new AssetHeader(urlPath + assetBundleName, 0); header.size = new FileInfo(path + assetBundleName).Length; dependencies = manifest.GetAllDependencies(assetBundleName); header.dependencies = new string[dependencies.Length]; for (int i = 0; i < dependencies.Length; i++) { header.dependencies[i] = urlPath + dependencies[i]; } // Save into file string fileName = path + assetBundleName + AssetHeader.SUFFIX; File.WriteAllText(fileName, JsonUtility.ToJson(header)); } }
public void Add(AssetHeader ObjToSave) { _context.AssetHeaders.Add(ObjToSave); }
public AssetHeader GetAssetHeader(AssetHeader item) { return((AssetHeader)assetheaderDAL.GetItem <AssetHeader>(item)); }
public bool DeleteAssetHeader(AssetHeader item) { return(assetheaderDAL.Delete(item)); }
public bool SaveAssetHeader(AssetHeader newItem) { return(assetheaderDAL.Save(newItem)); }
public static void WriteAssetPackage(FileStream outputFileStream, IList <FileInfo> inputFiles, bool useCache) { using BinaryWriter headerWriter = new BinaryWriter(outputFileStream, Encoding.UTF8); //Write amount of assets headerWriter.Write(inputFiles.Count); headerWriter.Flush(); foreach (FileInfo file in inputFiles) { var writer = AssetLoaderResolver.FindAssetWriter(file.Extension); var metaFile = AssetFileHelpers.GetMetaFile(file); IAssetMeta meta = new JsonAssetMeta(); writer.GetDefaultMeta(meta); if (metaFile.Exists) { using var fs = metaFile.OpenRead(); meta.ReadFromStream(fs); } Stopwatch watch = new Stopwatch(); watch.Start(); Console.WriteLine($"Processing file: {file}."); using MemoryStream uncompressedOutput = new MemoryStream(); using MemoryStream compressedOutput = new MemoryStream(); if (AssetCacher.HasCachedFile(file, meta) && useCache) { AssetCacher.LoadCachedFile(file, meta, uncompressedOutput); Console.WriteLine("Cached found!"); } else { Console.WriteLine("No cached asset found"); writer.LoadAndWriteToStream(file, meta, uncompressedOutput); AssetCacher.SaveCachedFile(file, meta, uncompressedOutput); } Console.WriteLine($"Processing took: {watch.ElapsedMilliseconds} milliseconds."); watch.Restart(); Console.WriteLine("Compressing..."); using DeflateStream deflate = new DeflateStream(compressedOutput, CompressionLevel.Optimal, true); uncompressedOutput.Seek(0, SeekOrigin.Begin); uncompressedOutput.CopyTo(deflate); deflate.Flush(); string assetName = AssetFileHelpers.GetAssetName(file); System.Type assetType = writer.GetAssetType(); long length = uncompressedOutput.Length; long compressedLength = compressedOutput.Length; AssetHeader.WriteAssetHeader(headerWriter, assetName, assetType, AssetCompression.Deflate, length, compressedLength); compressedOutput.Seek(0, SeekOrigin.Begin); compressedOutput.CopyTo(outputFileStream); watch.Stop(); Console.WriteLine($"Compression took: {watch.ElapsedMilliseconds} milliseconds."); } }
public static AssetOutputFile Create(IAssetFile from, MemoryStream content, AssetHeader meta = null, string extension = null) { return Create(from, content.ToArray(), meta, extension); }
public static AssetOutputFile Create(IAssetFile from, string content, AssetHeader meta = null, string extension = null) { return Create(from, Encoding.UTF8.GetBytes(content), meta, extension); }
/// <summary> /// Constructs a new file wrapper around a file info. /// </summary> /// <param name="file">The file info to wrap.</param> /// <param name="meta">The metadata associated with the output file.</param> /// <param name="project">The project of this file.</param> /// <param name="content">The content of the output file.</param> public AssetOutputFile(SiteProject project, FileInfo file, AssetHeader meta, byte[] content) : base(project, file) { this.CachedContent = content; this.Meta = meta; }