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

Mgv7: 1 up , 1 down overgeneration for chunk border continuity

Fixes biome layer at y = 47 when base/alt terrain exceeds it
Also fixes missing dust glitch at y = 47
Mgv5/mgv7:Cleanup code
This commit is contained in:
paramat 2015-03-20 18:06:05 +00:00
parent 008d7e0467
commit d6638b4300
2 changed files with 32 additions and 52 deletions

View file

@ -377,9 +377,9 @@ int MapgenV5::generateBaseTerrain()
stone_surface_max_y = y;
}
}
index2d = index2d - ystride;
index2d -= ystride;
}
index2d = index2d + ystride;
index2d += ystride;
}
return stone_surface_max_y;
@ -391,10 +391,6 @@ bool MapgenV5::generateBiomes(float *heat_map, float *humidity_map)
if (node_max.Y < water_level)
return false;
MapNode n_air(CONTENT_AIR);
MapNode n_stone(c_stone);
MapNode n_water(c_water_source);
v3s16 em = vm->m_area.getExtent();
u32 index = 0;
bool desert_stone = false;
@ -496,9 +492,9 @@ void MapgenV5::generateCaves(int max_stone_y)
if (d1*d2 > 0.125)
vm->m_data[i] = MapNode(CONTENT_AIR);
}
index2d = index2d - ystride;
index2d -= ystride;
}
index2d = index2d + ystride;
index2d += ystride;
}
if (node_max.Y > LARGE_CAVE_DEPTH)
@ -528,27 +524,25 @@ void MapgenV5::dustTopNodes()
if (biome->c_dust == CONTENT_IGNORE)
continue;
s16 y_full_max = full_node_max.Y;
u32 vi_full_max = vm->m_area.index(x, y_full_max, z);
content_t c_full_max = vm->m_data[vi_full_max].getContent();
u32 vi = vm->m_area.index(x, full_node_max.Y, z);
content_t c_full_max = vm->m_data[vi].getContent();
s16 y_start;
if (c_full_max == CONTENT_AIR) {
y_start = y_full_max - 1;
y_start = full_node_max.Y - 1;
} else if (c_full_max == CONTENT_IGNORE) {
s16 y_max = node_max.Y;
u32 vi_max = vm->m_area.index(x, y_max, z);
content_t c_max = vm->m_data[vi_max].getContent();
vi = vm->m_area.index(x, node_max.Y + 1, z);
content_t c_max = vm->m_data[vi].getContent();
if (c_max == CONTENT_AIR)
y_start = y_max - 1;
y_start = node_max.Y;
else
continue;
} else {
continue;
}
u32 vi = vm->m_area.index(x, y_start, z);
vi = vm->m_area.index(x, y_start, z);
for (s16 y = y_start; y >= node_min.Y - 1; y--) {
if (vm->m_data[vi].getContent() != CONTENT_AIR)
break;