From 569998011e0a9cb6179f1e79fb15b7a3ce80977f Mon Sep 17 00:00:00 2001 From: paramat Date: Mon, 30 May 2016 13:15:14 +0100 Subject: Mgv7: Always carve river channels in mountain terrain Previously, rivers were sometimes blocked by vertical walls of mountain terrain due to river carving being disabled when base terrain height was below water_level - 16 Remove now unused base terrain heightmap created in generateTerrain() --- src/mapgen_v7.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'src/mapgen_v7.cpp') diff --git a/src/mapgen_v7.cpp b/src/mapgen_v7.cpp index 9ff2fbe66..7327facae 100644 --- a/src/mapgen_v7.cpp +++ b/src/mapgen_v7.cpp @@ -206,13 +206,15 @@ void MapgenV7::makeChunk(BlockMakeData *data) blockseed = getBlockSeed2(full_node_min, seed); - // Generate terrain and ridges with initial heightmaps + // Generate base and mountain terrain + // An initial heightmap is no longer created here for use in generateRidgeTerrain() s16 stone_surface_max_y = generateTerrain(); + // Generate rivers if (spflags & MGV7_RIDGES) generateRidgeTerrain(); - // Update heightmap to include mountain terrain + // Create heightmap updateHeightmap(node_min, node_max); // Init biome generator, place biome-specific nodes, and build biomemap @@ -331,7 +333,6 @@ int MapgenV7::generateTerrain() for (s16 z = node_min.Z; z <= node_max.Z; z++) for (s16 x = node_min.X; x <= node_max.X; x++, index2d++) { s16 surface_y = baseTerrainLevelFromMap(index2d); - heightmap[index2d] = surface_y; // Create base terrain heightmap if (surface_y > stone_surface_max_y) stone_surface_max_y = surface_y; @@ -382,9 +383,6 @@ void MapgenV7::generateRidgeTerrain() for (s16 x = node_min.X; x <= node_max.X; x++, index++, vi++) { int j = (z - node_min.Z) * csize.X + (x - node_min.X); - if (heightmap[j] < water_level - 16) // Use base terrain heightmap - continue; - float uwatern = noise_ridge_uwater->result[j] * 2; if (fabs(uwatern) > width) continue; -- cgit v1.2.3