public byte[] ToBytes() { var header_length = 28; var featureTableJson = BufferPadding.AddPadding(FeatureTableJson, header_length); var batchTableJson = BufferPadding.AddPadding(BatchTableJson); var featureTableBinary = BufferPadding.AddPadding(FeatureTableBinary); var batchTableBinary = BufferPadding.AddPadding(BatchTableBinary); B3dmHeader.ByteLength = GlbData.Length + header_length + featureTableJson.Length + batchTableJson.Length + batchTableBinary.Length + FeatureTableBinary.Length; B3dmHeader.FeatureTableJsonByteLength = featureTableJson.Length; B3dmHeader.BatchTableJsonByteLength = batchTableJson.Length; B3dmHeader.FeatureTableBinaryByteLength = featureTableBinary.Length; B3dmHeader.BatchTableBinaryByteLength = batchTableBinary.Length; var memoryStream = new MemoryStream(); var binaryWriter = new BinaryWriter(memoryStream); binaryWriter.Write(B3dmHeader.AsBinary()); binaryWriter.Write(Encoding.UTF8.GetBytes(featureTableJson)); if (featureTableBinary != null) { binaryWriter.Write(featureTableBinary); } binaryWriter.Write(Encoding.UTF8.GetBytes(batchTableJson)); if (batchTableBinary != null) { binaryWriter.Write(batchTableBinary); } binaryWriter.Write(GlbData); binaryWriter.Flush(); binaryWriter.Close(); return(memoryStream.ToArray()); }
public static string AddPadding(string input, int offset = 0) { var bytes = Encoding.UTF8.GetBytes(input); var paddedBytes = BufferPadding.AddPadding(bytes, offset); var result = Encoding.UTF8.GetString(paddedBytes); return(result); }