public byte[] Get(bool IsLittleEndian) { byte[] returned; using (MemoryStream MS = new MemoryStream()) { BinaryWriter writer; if (IsLittleEndian) { writer = new BinaryWriter(MS); } else { writer = new BinaryWriterBE(MS); } Header.Get(writer); foreach (var a in TextureOffsetList) { writer.Write((int)0); writer.Write(a); } foreach (var a in KeyOffsetList) { writer.Write((int)0); writer.Write(a); } KeyList.Get(writer); int temp = Utilities.Utilities.Alignment(writer.BaseStream.Position, 16); writer.Write(new byte[temp == 0 ? 16 : temp]); UpdateOffsets(TextureOffsetList, (int)writer.BaseStream.Position, Textures.list); Textures.Get(writer); writer.BaseStream.Position = Header.Size; foreach (var a in TextureOffsetList) { writer.Write((int)0); writer.Write(a); } returned = MS.ToArray(); } return(returned); }
public byte[] Get() { byte[] returned; using (MemoryStream MS = new MemoryStream()) { BinaryWriter writer = Utilities.IO.OpenWriteFile(MS, IsLittleEndian); Header.Get(writer); foreach (var a in TextureOffsetList) { writer.Write((int)0); writer.Write(a); } foreach (var a in KeyOffsetList) { writer.Write((int)0); writer.Write(a); } KeyList.Get(writer); int temp = Utilities.Utilities.Alignment(writer.BaseStream.Position, 16); writer.Write(new byte[temp == 0 ? 16 : temp]); UpdateOffsets(TextureOffsetList, (int)writer.BaseStream.Position); writer.Write((SubFiles[0].Object as IFile).Get()); for (int i = 1; i < SubFiles.Count; i++) { int temp2 = Utilities.Utilities.Alignment(writer.BaseStream.Length, 16); writer.Write(new byte[temp2 == 0 ? 16 : temp2]); writer.Write((SubFiles[i].Object as IFile).Get()); } writer.BaseStream.Position = Header.Size; foreach (var a in TextureOffsetList) { writer.Write((int)0); writer.Write(a); } returned = MS.ToArray(); } return(returned); }