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

Optimize liquid queue on generate map for liquid_finite

This commit is contained in:
proller 2013-06-30 01:29:21 +04:00
parent 21a4adcd27
commit 848c3fe51a
2 changed files with 11 additions and 6 deletions

View file

@ -836,8 +836,10 @@ void Mapgen::updateHeightmap(v3s16 nmin, v3s16 nmax) {
void Mapgen::updateLiquid(UniqueQueue<v3s16> *trans_liquid, v3s16 nmin, v3s16 nmax) {
bool isliquid, wasliquid;
bool isliquid, wasliquid, rare;
v3s16 em = vm->m_area.getExtent();
rare = g_settings->getBool("liquid_finite");
int rarecnt = 0;
for (s16 z = nmin.Z; z <= nmax.Z; z++) {
for (s16 x = nmin.X; x <= nmax.X; x++) {
@ -847,8 +849,8 @@ void Mapgen::updateLiquid(UniqueQueue<v3s16> *trans_liquid, v3s16 nmin, v3s16 nm
for (s16 y = nmax.Y; y >= nmin.Y; y--) {
isliquid = ndef->get(vm->m_data[i]).isLiquid();
// there was a change between liquid and nonliquid, add to queue
if (isliquid != wasliquid)
// there was a change between liquid and nonliquid, add to queue. no need to add every with liquid_finite
if (isliquid != wasliquid && (!rare || !(rarecnt++ % 36)))
trans_liquid->push_back(v3s16(x, y, z));
wasliquid = isliquid;