diff options
author | paramat <mat.gregory@virginmedia.com> | 2016-03-19 19:10:37 +0000 |
---|---|---|
committer | paramat <mat.gregory@virginmedia.com> | 2016-03-21 17:42:13 +0000 |
commit | 493a298c0c94d03cdcdb4a52684094f88cbd48c5 (patch) | |
tree | f2563547df31177af67531873201c42ec3105727 | |
parent | 93887043d9443ba6627fea68921994d0f1896517 (diff) | |
download | minetest-493a298c0c94d03cdcdb4a52684094f88cbd48c5.tar.gz minetest-493a298c0c94d03cdcdb4a52684094f88cbd48c5.tar.bz2 minetest-493a298c0c94d03cdcdb4a52684094f88cbd48c5.zip |
Mgv7/flat/fractal: Stop tunnel-floor biome nodes being placed everywhere
A bool for 'in or under tunnel' was missing
1-node-deep stone ledges were being
replaced with biome surface material
-rw-r--r-- | src/mapgen_flat.cpp | 6 | ||||
-rw-r--r-- | src/mapgen_fractal.cpp | 6 | ||||
-rw-r--r-- | src/mapgen_v7.cpp | 6 |
3 files changed, 15 insertions, 3 deletions
diff --git a/src/mapgen_flat.cpp b/src/mapgen_flat.cpp index d654a772e..7a5302df0 100644 --- a/src/mapgen_flat.cpp +++ b/src/mapgen_flat.cpp @@ -565,6 +565,7 @@ void MapgenFlat::generateCaves(s16 max_stone_y) for (s16 z = node_min.Z; z <= node_max.Z; z++) for (s16 x = node_min.X; x <= node_max.X; x++, index2d++) { bool column_is_open = false; // Is column open to overground + bool is_tunnel = false; // Is tunnel or tunnel floor u32 vi = vm->m_area.index(x, node_max.Y + 1, z); u32 index3d = (z - node_min.Z) * zstride + (csize.Y + 1) * ystride + (x - node_min.X); @@ -591,13 +592,16 @@ void MapgenFlat::generateCaves(s16 max_stone_y) if (d1 * d2 > 0.3f && ndef->get(c).is_ground_content) { // In tunnel and ground content, excavate vm->m_data[vi] = MapNode(CONTENT_AIR); - } else if (column_is_open && + is_tunnel = true; + } else if (is_tunnel && column_is_open && (c == biome->c_filler || c == biome->c_stone)) { // Tunnel entrance floor vm->m_data[vi] = MapNode(biome->c_top); column_is_open = false; + is_tunnel = false; } else { column_is_open = false; + is_tunnel = false; } } } diff --git a/src/mapgen_fractal.cpp b/src/mapgen_fractal.cpp index cdea9c09a..0430f92ff 100644 --- a/src/mapgen_fractal.cpp +++ b/src/mapgen_fractal.cpp @@ -693,6 +693,7 @@ void MapgenFractal::generateCaves(s16 max_stone_y) for (s16 z = node_min.Z; z <= node_max.Z; z++) for (s16 x = node_min.X; x <= node_max.X; x++, index2d++) { bool column_is_open = false; // Is column open to overground + bool is_tunnel = false; // Is tunnel or tunnel floor u32 vi = vm->m_area.index(x, node_max.Y + 1, z); u32 index3d = (z - node_min.Z) * zstride + (csize.Y + 1) * ystride + (x - node_min.X); @@ -719,13 +720,16 @@ void MapgenFractal::generateCaves(s16 max_stone_y) if (d1 * d2 > 0.3f && ndef->get(c).is_ground_content) { // In tunnel and ground content, excavate vm->m_data[vi] = MapNode(CONTENT_AIR); - } else if (column_is_open && + is_tunnel = true; + } else if (is_tunnel && column_is_open && (c == biome->c_filler || c == biome->c_stone)) { // Tunnel entrance floor vm->m_data[vi] = MapNode(biome->c_top); column_is_open = false; + is_tunnel = false; } else { column_is_open = false; + is_tunnel = false; } } } diff --git a/src/mapgen_v7.cpp b/src/mapgen_v7.cpp index 9e3e3f1a8..db13e3ce6 100644 --- a/src/mapgen_v7.cpp +++ b/src/mapgen_v7.cpp @@ -875,6 +875,7 @@ void MapgenV7::generateCaves(s16 max_stone_y) for (s16 z = node_min.Z; z <= node_max.Z; z++) for (s16 x = node_min.X; x <= node_max.X; x++, index2d++) { bool column_is_open = false; // Is column open to overground + bool is_tunnel = false; // Is tunnel or tunnel floor u32 vi = vm->m_area.index(x, node_max.Y + 1, z); u32 index3d = (z - node_min.Z) * zstride + (csize.Y + 1) * ystride + (x - node_min.X); @@ -901,13 +902,16 @@ void MapgenV7::generateCaves(s16 max_stone_y) if (d1 * d2 > 0.3f && ndef->get(c).is_ground_content) { // In tunnel and ground content, excavate vm->m_data[vi] = MapNode(CONTENT_AIR); - } else if (column_is_open && + is_tunnel = true; + } else if (is_tunnel && column_is_open && (c == biome->c_filler || c == biome->c_stone)) { // Tunnel entrance floor vm->m_data[vi] = MapNode(biome->c_top); column_is_open = false; + is_tunnel = false; } else { column_is_open = false; + is_tunnel = false; } } } |