public byte[] ToByteArray() { if (HasUnknownElements) { throw new Exception("Can not save animation pack with unkown elements"); } using MemoryStream memStream = new MemoryStream(); int totalFileCount = Fragments.Count; if (AnimationBin != null) { totalFileCount++; } memStream.Write(ByteParsers.Int32.EncodeValue(totalFileCount, out _)); if (AnimationBin != null) { var animBinByteArray = AnimationBin.ToByteArray(); AnimationDataFile file = new AnimationDataFile() { Name = AnimationBin.FileName, Size = animBinByteArray.Length }; memStream.Write(file.ToByteArray()); memStream.Write(animBinByteArray); } foreach (var item in Fragments) { var itemByteArray = item.ToByteArray(); AnimationDataFile file = new AnimationDataFile() { Name = item.FileName, Size = itemByteArray.Length }; memStream.Write(file.ToByteArray()); memStream.Write(itemByteArray); } return(memStream.ToArray()); }