From 392ac41c993daba284d4840fe93169f802d860b6 Mon Sep 17 00:00:00 2001 From: paramat Date: Mon, 6 Apr 2015 22:52:08 +0100 Subject: Cavegen: Remove now unnecessary checks for water, lava, ice Remove large cave checks for air Mgv5/mgv7:Add is_ground_content checks to 3d noise tunnels More large caves Shorten lines --- src/mapgen_v7.cpp | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) (limited to 'src/mapgen_v7.cpp') diff --git a/src/mapgen_v7.cpp b/src/mapgen_v7.cpp index f370a0fdb..12ca12a86 100644 --- a/src/mapgen_v7.cpp +++ b/src/mapgen_v7.cpp @@ -605,11 +605,12 @@ bool MapgenV7::generateBiomes(float *heat_map, float *humidity_map) for (s16 y = node_max.Y; y >= node_min.Y; y--) { content_t c = vm->m_data[i].getContent(); - if (c != CONTENT_IGNORE && c != CONTENT_AIR && (y == node_max.Y || have_air)) { - biome = bmgr->getBiome(heat_map[index], humidity_map[index], y); - dfiller = biome->depth_filler + noise_filler_depth->result[index]; - y0_top = biome->depth_top; - y0_filler = biome->depth_top + dfiller; + if (c != CONTENT_IGNORE && c != CONTENT_AIR && + (y == node_max.Y || have_air)) { + biome = bmgr->getBiome(heat_map[index], humidity_map[index], y); + dfiller = biome->depth_filler + noise_filler_depth->result[index]; + y0_top = biome->depth_top; + y0_filler = biome->depth_top + dfiller; depth_water_top = biome->depth_water_top; if (biome->c_stone == c_desert_stone) @@ -820,16 +821,21 @@ void MapgenV7::generateCaves(int max_stone_y) u32 i = vm->m_area.index(node_min.X, y, z); for (s16 x = node_min.X; x <= node_max.X; x++, i++, index++, index2d++) { - Biome *biome = (Biome *)bmgr->getRaw(biomemap[index2d]); - content_t c = vm->m_data[i].getContent(); - if (c == CONTENT_AIR || (y <= water_level && - c != biome->c_stone && c != c_stone)) - continue; - float d1 = contour(noise_cave1->result[index]); float d2 = contour(noise_cave2->result[index]); - if (d1 * d2 > 0.3) + if (d1 * d2 > 0.3) { + Biome *biome = (Biome *)bmgr-> + getRaw(biomemap[index2d]); + content_t c = vm->m_data[i].getContent(); + if (!ndef->get(c).is_ground_content || + c == CONTENT_AIR || + (y <= water_level && + c != biome->c_stone && + c != c_stone)) + continue; + vm->m_data[i] = MapNode(CONTENT_AIR); + } } index2d -= ystride; } @@ -838,7 +844,7 @@ void MapgenV7::generateCaves(int max_stone_y) } PseudoRandom ps(blockseed + 21343); - u32 bruises_count = (ps.range(1, 5) == 1) ? ps.range(1, 2) : 0; + u32 bruises_count = (ps.range(1, 4) == 1) ? ps.range(1, 2) : 0; for (u32 i = 0; i < bruises_count; i++) { CaveV7 cave(this, &ps); cave.makeCave(node_min, node_max, max_stone_y); -- cgit v1.2.3