mirror of
https://github.com/luanti-org/minetestmapper.git
synced 2025-10-07 06:15:20 +02:00
Keep track of decoded/rendered blocks
and fix small oversight in previous commit
This commit is contained in:
@@ -544,7 +544,7 @@ void TileGenerator::renderMap()
|
|||||||
BlockDecoder blk;
|
BlockDecoder blk;
|
||||||
const int16_t yMax = mod16(m_yMax) + 1;
|
const int16_t yMax = mod16(m_yMax) + 1;
|
||||||
const int16_t yMin = mod16(m_yMin);
|
const int16_t yMin = mod16(m_yMin);
|
||||||
size_t count = 0;
|
size_t bTotal = 0, bRender = 0, bEmpty = 0;
|
||||||
|
|
||||||
// returns true to skip
|
// returns true to skip
|
||||||
auto decode = [&] (BlockPos pos, const ustring &buf) -> bool {
|
auto decode = [&] (BlockPos pos, const ustring &buf) -> bool {
|
||||||
@@ -560,6 +560,9 @@ void TileGenerator::renderMap()
|
|||||||
};
|
};
|
||||||
|
|
||||||
auto renderSingle = [&] (int16_t xPos, int16_t zPos, BlockList &blockStack) {
|
auto renderSingle = [&] (int16_t xPos, int16_t zPos, BlockList &blockStack) {
|
||||||
|
if (blockStack.empty())
|
||||||
|
return;
|
||||||
|
|
||||||
m_readPixels.reset();
|
m_readPixels.reset();
|
||||||
m_readInfo.reset();
|
m_readInfo.reset();
|
||||||
for (int i = 0; i < 16; i++) {
|
for (int i = 0; i < 16; i++) {
|
||||||
@@ -570,12 +573,17 @@ void TileGenerator::renderMap()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bTotal += blockStack.size();
|
||||||
for (const auto &it : blockStack) {
|
for (const auto &it : blockStack) {
|
||||||
const BlockPos pos = it.first;
|
const BlockPos pos = it.first;
|
||||||
assert(pos.x == xPos && pos.z == zPos);
|
assert(pos.x == xPos && pos.z == zPos);
|
||||||
assert(pos.y >= yMin && pos.y < yMax);
|
assert(pos.y >= yMin && pos.y < yMax);
|
||||||
|
|
||||||
decode(pos, it.second);
|
if (decode(pos, it.second)) {
|
||||||
|
bEmpty++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
bRender++;
|
||||||
renderMapBlock(blk, pos);
|
renderMapBlock(blk, pos);
|
||||||
|
|
||||||
// Exit out if all pixels for this MapBlock are covered
|
// Exit out if all pixels for this MapBlock are covered
|
||||||
@@ -591,6 +599,7 @@ void TileGenerator::renderMap()
|
|||||||
renderShading(zPos);
|
renderShading(zPos);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
size_t count = 0; // fraction of m_progressMax
|
||||||
if (m_exhaustiveSearch == EXH_NEVER) {
|
if (m_exhaustiveSearch == EXH_NEVER) {
|
||||||
for (auto it = m_positions.rbegin(); it != m_positions.rend(); ++it) {
|
for (auto it = m_positions.rbegin(); it != m_positions.rend(); ++it) {
|
||||||
int16_t zPos = it->first;
|
int16_t zPos = it->first;
|
||||||
@@ -656,6 +665,8 @@ void TileGenerator::renderMap()
|
|||||||
}
|
}
|
||||||
|
|
||||||
reportProgress(m_progressMax);
|
reportProgress(m_progressMax);
|
||||||
|
verbosestream << "Block stats: " << bTotal << " total, " << bRender
|
||||||
|
<< " rendered, " << bEmpty << " empty" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TileGenerator::renderMapBlock(const BlockDecoder &blk, const BlockPos &pos)
|
void TileGenerator::renderMapBlock(const BlockDecoder &blk, const BlockPos &pos)
|
||||||
|
Reference in New Issue
Block a user