1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

start blocks out a expanded block (not monoblocks)

This commit is contained in:
Lars 2025-06-21 14:11:55 -07:00
parent 1ad31ef10b
commit 2144d9c20b
2 changed files with 9 additions and 5 deletions

View file

@ -104,9 +104,9 @@ MapBlock::MapBlock(v3s16 pos, IGameDef *gamedef):
m_pos(pos),
m_pos_relative(pos * MAP_BLOCKSIZE),
m_gamedef(gamedef),
m_is_mono_block(true)
m_is_mono_block(false)
{
reallocate(1, MapNode(CONTENT_IGNORE));
reallocate(nodecount, MapNode(CONTENT_IGNORE));
}
MapBlock::~MapBlock()

View file

@ -57,21 +57,25 @@ void TestMapBlock::runTests(IGameDef *gamedef)
void TestMapBlock::testMonoblock(IGameDef *gamedef)
{
MapBlock block({}, gamedef);
UASSERT(block.m_is_mono_block);
block.data[0] = MapNode(CONTENT_AIR);
UASSERT(!block.m_is_mono_block);
// make the array is expanded
block.expandNodesIfNeeded();
UASSERT(std::all_of(block.data, block.data + MapBlock::nodecount, [](MapNode &n) { return n == MapNode(CONTENT_AIR); }));
UASSERT(std::all_of(block.data, block.data + MapBlock::nodecount, [](MapNode &n) { return n == MapNode(CONTENT_IGNORE); }));
// covert to monoblock
block.tryShrinkNodes();
UASSERT(block.m_is_mono_block);
UASSERT(block.data[0].param0 == CONTENT_IGNORE);
block.data[0] = MapNode(CONTENT_AIR);
UASSERT(block.m_is_mono_block);
UASSERT(block.data[0].param0 == CONTENT_AIR);
// get the data(), should deconvert the block
block.getData();
UASSERT(!block.m_is_mono_block);
UASSERT(std::all_of(block.data, block.data + MapBlock::nodecount, [](MapNode &n) { return n == MapNode(CONTENT_AIR); }));
// covert back to mono block
block.tryShrinkNodes();