protected byte[] CompressMap() { int uncompressedSize = DynaBuffer.GetBytesUsed(); MemoryStream ms = new MemoryStream(); Ionic.Zlib.ZlibStream ws = new Ionic.Zlib.ZlibStream(ms, Ionic.Zlib.CompressionMode.Compress, Ionic.Zlib.CompressionLevel.BestCompression, true); ws.Write(DynaBuffer.GetRawBuffer(), 0, uncompressedSize); ws.Flush(); ws.Close(); int len = (int)ms.Length; byte[] compressedData = ms.GetBuffer(); // ms.Length(); Array.Resize(ref compressedData, (int)ms.Length); DynamicOutputBuffer header = DynamicOutputBuffer.GetTempBuffer(64); header.WriteUInt16(Constants.WorldCodeHeaderSize); header.WriteUInt16(Constants.WorldCodeHeader); header.WriteUInt16(1); header.WriteUInt32(uncompressedSize); header.WriteUInt32(compressedData.Length); header.WriteBytes(compressedData); header.WriteUInt16(Constants.WorldCodeEndSize); header.WriteUInt16(Constants.WorldCodeEnd); return(header.GetFinalBuffer()); }
public override byte[] Pack() { DynamicOutputBuffer buffer = DynamicOutputBuffer.Get(Code); buffer.WriteUInt32(Offset); if (Data.Length > 0) { buffer.WriteBytes(Data); } return(buffer.GetMessageBuffer()); }