]> git.lizzy.rs Git - dragonfireclient.git/commitdiff
Mgv7: Always carve river channels in mountain terrain
authorparamat <mat.gregory@virginmedia.com>
Mon, 30 May 2016 12:15:14 +0000 (13:15 +0100)
committerparamat <mat.gregory@virginmedia.com>
Thu, 2 Jun 2016 06:31:01 +0000 (07:31 +0100)
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

index 9ff2fbe66e89fde952fe04b5f3985fe2e6b0511c..7327facaef1c82b5a6ce048d3185ea2b64f8e1ae 100644 (file)
@@ -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;