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;
|
const u8 params_width = 2;
|
||||||
if(disk)
|
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];
|
MapNode *tmp_nodes = new MapNode[size];
|
||||||
memcpy(tmp_nodes, data, size * sizeof(MapNode));
|
memcpy(tmp_nodes, data, size * sizeof(MapNode));
|
||||||
getBlockNodeIdMapping(&nimap, tmp_nodes, m_gamedef->ndef(), size);
|
getBlockNodeIdMapping(&nimap, tmp_nodes, m_gamedef->ndef(), size);
|
||||||
|
|
|
@ -21,9 +21,7 @@ class NodeMetadataList;
|
||||||
class IGameDef;
|
class IGameDef;
|
||||||
class MapBlockMesh;
|
class MapBlockMesh;
|
||||||
class VoxelManipulator;
|
class VoxelManipulator;
|
||||||
#if BUILD_UNITTESTS
|
|
||||||
class TestMapBlock;
|
class TestMapBlock;
|
||||||
#endif
|
|
||||||
|
|
||||||
#define BLOCK_TIMESTAMP_UNDEFINED 0xffffffff
|
#define BLOCK_TIMESTAMP_UNDEFINED 0xffffffff
|
||||||
|
|
||||||
|
@ -442,7 +440,9 @@ private:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void deSerialize_pre22(std::istream &is, u8 version, bool disk);
|
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();
|
void tryConvertToMonoblock();
|
||||||
|
// if only a single node is stored, expand storage back to the full array
|
||||||
void deconvertMonoblock();
|
void deconvertMonoblock();
|
||||||
void reallocate(u32 c, MapNode n);
|
void reallocate(u32 c, MapNode n);
|
||||||
|
|
||||||
|
|
|
@ -121,7 +121,6 @@ void TestMapBlock::testMonoblock(IGameDef *gamedef)
|
||||||
UASSERT(vmm.getNode({5,5,5}).param0 == 42);
|
UASSERT(vmm.getNode({5,5,5}).param0 == 42);
|
||||||
|
|
||||||
block.setNode(5,5,5,MapNode(23));
|
block.setNode(5,5,5,MapNode(23));
|
||||||
t = block.data;
|
|
||||||
|
|
||||||
block.copyFrom(vmm);
|
block.copyFrom(vmm);
|
||||||
UASSERT(block.m_is_mono_block);
|
UASSERT(block.m_is_mono_block);
|
||||||
|
@ -130,6 +129,34 @@ void TestMapBlock::testMonoblock(IGameDef *gamedef)
|
||||||
vmm.setNode({5,5,5}, MapNode(23));
|
vmm.setNode({5,5,5}, MapNode(23));
|
||||||
block.copyFrom(vmm);
|
block.copyFrom(vmm);
|
||||||
UASSERT(!block.m_is_mono_block);
|
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)
|
void TestMapBlock::testSaveLoad(IGameDef *gamedef, const u8 version)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue