Correct overflowing rivers in Valleys mapgen.
authorDuane Robertson <duane@duanerobertson.com>
Mon, 18 Jan 2016 07:55:08 +0000 (01:55 -0600)
committerparamat <mat.gregory@virginmedia.com>
Mon, 18 Jan 2016 17:21:13 +0000 (17:21 +0000)
src/mapgen_valleys.cpp

index 93f47cd5f55fd51586400f577e33c964bb68c163..6f4b2ccc797929599bbbbb50e0cb3eddc0f75235 100644 (file)
@@ -670,8 +670,8 @@ int MapgenValleys::generateTerrain()
 
        for (s16 z = node_min.Z; z <= node_max.Z; z++)
        for (s16 x = node_min.X; x <= node_max.X; x++, index_2d++) {
-               s16 river_y = round(noise_rivers->result[index_2d]);
-               s16 surface_y = round(noise_terrain_height->result[index_2d]);
+               s16 river_y = floor(noise_rivers->result[index_2d]);
+               s16 surface_y = floor(noise_terrain_height->result[index_2d]);
                float slope = noise_inter_valley_slope->result[index_2d];
 
                heightmap[index_2d] = surface_y;
@@ -703,7 +703,7 @@ int MapgenValleys::generateTerrain()
                                } else if (river && y < river_y) {
                                        // river
                                        vm->m_data[index_data] = n_river_water;
-                               } else if ((!fast_terrain) && (!river) && fill * slope > y - surface_y) {
+                               } else if ((!fast_terrain) && (!river) && round(fill * slope) >= y - surface_y) {
                                        // ground (slow method)
                                        vm->m_data[index_data] = n_stone;
                                        heightmap[index_2d] = surface_max_y = y;