mirror of
https://github.com/luanti-org/luanti.git
synced 2025-07-27 17:28:41 +00:00
Switch MapBlock compression to zstd (#10788)
* Add zstd support. * Rearrange serialization order * Compress entire mapblock Co-authored-by: sfan5 <sfan5@live.de>
This commit is contained in:
parent
beac4a2c98
commit
d1624a5521
24 changed files with 494 additions and 152 deletions
|
@ -339,7 +339,9 @@ bool Schematic::deserializeFromMts(std::istream *is)
|
|||
delete []schemdata;
|
||||
schemdata = new MapNode[nodecount];
|
||||
|
||||
MapNode::deSerializeBulk(ss, SER_FMT_VER_HIGHEST_READ, schemdata,
|
||||
std::stringstream d_ss(std::ios_base::binary | std::ios_base::in | std::ios_base::out);
|
||||
decompress(ss, d_ss, MTSCHEM_MAPNODE_SER_FMT_VER);
|
||||
MapNode::deSerializeBulk(d_ss, MTSCHEM_MAPNODE_SER_FMT_VER, schemdata,
|
||||
nodecount, 2, 2);
|
||||
|
||||
// Fix probability values for nodes that were ignore; removed in v2
|
||||
|
@ -384,8 +386,9 @@ bool Schematic::serializeToMts(std::ostream *os) const
|
|||
}
|
||||
|
||||
// compressed bulk node data
|
||||
MapNode::serializeBulk(ss, SER_FMT_VER_HIGHEST_WRITE,
|
||||
schemdata, size.X * size.Y * size.Z, 2, 2, -1);
|
||||
SharedBuffer<u8> buf = MapNode::serializeBulk(MTSCHEM_MAPNODE_SER_FMT_VER,
|
||||
schemdata, size.X * size.Y * size.Z, 2, 2);
|
||||
compress(buf, ss, MTSCHEM_MAPNODE_SER_FMT_VER);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -70,6 +70,7 @@ class Server;
|
|||
#define MTSCHEM_FILE_SIGNATURE 0x4d54534d // 'MTSM'
|
||||
#define MTSCHEM_FILE_VER_HIGHEST_READ 4
|
||||
#define MTSCHEM_FILE_VER_HIGHEST_WRITE 4
|
||||
#define MTSCHEM_MAPNODE_SER_FMT_VER 28 // Fixed serialization version for schematics since these still need to use Zlib
|
||||
|
||||
#define MTSCHEM_PROB_MASK 0x7F
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue