mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
address review
This commit is contained in:
parent
b9deee2147
commit
0da467c374
3 changed files with 31 additions and 4 deletions
|
@ -429,7 +429,7 @@ void MapBlock::serialize(std::ostream &os_compressed, u8 version, bool disk, int
|
|||
const u8 params_width = 2;
|
||||
if(disk)
|
||||
{
|
||||
const int size = m_is_mono_block ? 1 : nodecount;
|
||||
const size_t size = m_is_mono_block ? 1 : nodecount;
|
||||
MapNode *tmp_nodes = new MapNode[size];
|
||||
memcpy(tmp_nodes, data, size * sizeof(MapNode));
|
||||
getBlockNodeIdMapping(&nimap, tmp_nodes, m_gamedef->ndef(), size);
|
||||
|
|
|
@ -21,9 +21,7 @@ class NodeMetadataList;
|
|||
class IGameDef;
|
||||
class MapBlockMesh;
|
||||
class VoxelManipulator;
|
||||
#if BUILD_UNITTESTS
|
||||
class TestMapBlock;
|
||||
#endif
|
||||
|
||||
#define BLOCK_TIMESTAMP_UNDEFINED 0xffffffff
|
||||
|
||||
|
@ -442,7 +440,9 @@ private:
|
|||
*/
|
||||
|
||||
void deSerialize_pre22(std::istream &is, u8 version, bool disk);
|
||||
// check if all nodes are identical, if so store them as a single node
|
||||
void tryConvertToMonoblock();
|
||||
// if only a single node is stored, expand storage back to the full array
|
||||
void deconvertMonoblock();
|
||||
void reallocate(u32 c, MapNode n);
|
||||
|
||||
|
|
|
@ -121,7 +121,6 @@ void TestMapBlock::testMonoblock(IGameDef *gamedef)
|
|||
UASSERT(vmm.getNode({5,5,5}).param0 == 42);
|
||||
|
||||
block.setNode(5,5,5,MapNode(23));
|
||||
t = block.data;
|
||||
|
||||
block.copyFrom(vmm);
|
||||
UASSERT(block.m_is_mono_block);
|
||||
|
@ -130,6 +129,34 @@ void TestMapBlock::testMonoblock(IGameDef *gamedef)
|
|||
vmm.setNode({5,5,5}, MapNode(23));
|
||||
block.copyFrom(vmm);
|
||||
UASSERT(!block.m_is_mono_block);
|
||||
|
||||
vmm.setNode({5,5,5}, MapNode(42,1,0));
|
||||
block.copyFrom(vmm);
|
||||
UASSERT(!block.m_is_mono_block);
|
||||
|
||||
vmm.setNode({5,5,5}, MapNode(42,0,1));
|
||||
block.copyFrom(vmm);
|
||||
UASSERT(!block.m_is_mono_block);
|
||||
|
||||
vmm.setNode({5,5,5}, MapNode(42));
|
||||
block.copyFrom(vmm);
|
||||
UASSERT(block.m_is_mono_block);
|
||||
|
||||
block.setNode(5,5,5,MapNode(23));
|
||||
block.tryConvertToMonoblock();
|
||||
UASSERT(!block.m_is_mono_block);
|
||||
|
||||
block.setNode(5,5,5,MapNode(42, 1, 0));
|
||||
block.tryConvertToMonoblock();
|
||||
UASSERT(!block.m_is_mono_block);
|
||||
|
||||
block.setNode(5,5,5,MapNode(42, 0, 1));
|
||||
block.tryConvertToMonoblock();
|
||||
UASSERT(!block.m_is_mono_block);
|
||||
|
||||
block.setNode(5,5,5,MapNode(42));
|
||||
block.tryConvertToMonoblock();
|
||||
UASSERT(block.m_is_mono_block);
|
||||
}
|
||||
|
||||
void TestMapBlock::testSaveLoad(IGameDef *gamedef, const u8 version)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue