Mgv5: Skip calculation of filler, heat and humidity perlinmaps in underground mapchunks
authorparamat <mat.gregory@virginmedia.com>
Wed, 21 Jan 2015 11:42:13 +0000 (11:42 +0000)
committerkwolekr <kwolekr@minetest.net>
Sat, 24 Jan 2015 02:24:47 +0000 (21:24 -0500)
src/mapgen_v5.cpp

index e288e80f2c344ecc1095cf8788054a0130b75d97..f7efc4e18e10ccdcb380a6cb499e3863f73cb6ef 100644 (file)
@@ -302,24 +302,25 @@ void MapgenV5::calculateNoise()
        int y = node_min.Y - 1;
        int z = node_min.Z;
 
-       noise_filler_depth->perlinMap2D(x, z);
        noise_factor->perlinMap2D(x, z);
        noise_height->perlinMap2D(x, z);
+       noise_ground->perlinMap3D(x, y, z);
 
        if (flags & MG_CAVES) {
                noise_cave1->perlinMap3D(x, y, z);
                noise_cave2->perlinMap3D(x, y, z);
        }
 
-       noise_ground->perlinMap3D(x, y, z);
-
        if (spflags & MGV5_BLOBS) {
                noise_crumble->perlinMap3D(x, y, z);
                noise_wetness->perlinMap3D(x, y, z);
        }
 
-       noise_heat->perlinMap2D(x, z);
-       noise_humidity->perlinMap2D(x, z);
+       if (node_max.Y >= water_level) {
+               noise_filler_depth->perlinMap2D(x, z);
+               noise_heat->perlinMap2D(x, z);
+               noise_humidity->perlinMap2D(x, z);
+       }
 
        //printf("calculateNoise: %dus\n", t.stop());
 }
@@ -531,12 +532,12 @@ void MapgenV5::generateBlobs()
 
 void MapgenV5::dustTopNodes()
 {
+       if (node_max.Y < water_level)
+               return;
+
        v3s16 em = vm->m_area.getExtent();
        u32 index = 0;
 
-       if (water_level > node_max.Y)
-               return;
-
        for (s16 z = node_min.Z; z <= node_max.Z; z++)
        for (s16 x = node_min.X; x <= node_max.X; x++, index++) {
                Biome *biome = (Biome *)bmgr->get(biomemap[index]);