public override long Write(AssetsFileWriter writer) { //memorystream for alignment issue using (MemoryStream ms = new MemoryStream()) using (AssetsFileWriter w = new AssetsFileWriter(ms)) { assetsFile.Write(w, -1, replacers, fileId, typeMeta); writer.Write(ms.ToArray()); } return(writer.Position); }
public override long Write(AssetsFileWriter writer) { // Some parts of an assets file need to be aligned to a multiple of 4/8/16 bytes, // but for this to work correctly, the start of the file of course needs to be aligned too. // In a loose .assets file this is true by default, but inside a bundle file, // this might not be the case. Therefore wrap the bundle output stream in a SegmentStream // which will make it look like the start of the new assets file is at position 0 SegmentStream alignedStream = new SegmentStream(writer.BaseStream, writer.Position); AssetsFileWriter alignedWriter = new AssetsFileWriter(alignedStream); assetsFile.Write(alignedWriter, -1, assetReplacers); writer.Position = writer.BaseStream.Length; return(writer.Position); }
public override long Write(AssetsFileWriter writer) { //todo, we have to write to ms because AssetsFile.Write //rewrites back at 0 which is the bundle header, not //the top of the assets file byte[] data; using (MemoryStream ms = new MemoryStream()) using (AssetsFileWriter w = new AssetsFileWriter(ms)) { assetsFile.Write(w, 0, replacers, fileId); data = ms.ToArray(); } writer.Write(data); return(writer.Position); }