]> git.lizzy.rs Git - minetest.git/blobdiff - src/mapgen_v6.cpp
Remove Android makefile ugly make -j hack
[minetest.git] / src / mapgen_v6.cpp
index 3d9f4c517371774a9af661f52187221f79f74220..fcf59562f1b096dc2850b88f153aacbb18c2594c 100644 (file)
@@ -55,6 +55,8 @@ MapgenV6::MapgenV6(int mapgenid, MapgenParams *params, EmergeManager *emerge)
        this->m_emerge = emerge;
        this->ystride = csize.X; //////fix this
 
+       this->heightmap = new s16[csize.X * csize.Z];
+
        MapgenV6Params *sp = (MapgenV6Params *)params->sparams;
        this->spflags     = sp->spflags;
        this->freq_desert = sp->freq_desert;
@@ -115,6 +117,8 @@ MapgenV6::~MapgenV6()
        delete noise_mud;
        delete noise_beach;
        delete noise_biome;
+
+       delete[] heightmap;
 }
 
 
@@ -138,7 +142,7 @@ MapgenV6Params::MapgenV6Params()
 }
 
 
-void MapgenV6Params::readParams(Settings *settings)
+void MapgenV6Params::readParams(const Settings *settings)
 {
        settings->getFlagStrNoEx("mgv6_spflags", spflags, flagdesc_mapgen_v6);
        settings->getFloatNoEx("mgv6_freq_desert", freq_desert);
@@ -158,7 +162,7 @@ void MapgenV6Params::readParams(Settings *settings)
 }
 
 
-void MapgenV6Params::writeParams(Settings *settings)
+void MapgenV6Params::writeParams(Settings *settings) const
 {
        settings->setFlagStr("mgv6_spflags", spflags, flagdesc_mapgen_v6, (u32)-1);
        settings->setFloat("mgv6_freq_desert", freq_desert);
@@ -424,6 +428,7 @@ u32 MapgenV6::get_blockseed(u64 seed, v3s16 p)
 
 void MapgenV6::makeChunk(BlockMakeData *data)
 {
+       // Pre-conditions
        assert(data->vmanip);
        assert(data->nodedef);
        assert(data->blockpos_requested.X >= data->blockpos_min.X &&
@@ -438,7 +443,6 @@ void MapgenV6::makeChunk(BlockMakeData *data)
        this->ndef = data->nodedef;
 
        // Hack: use minimum block coords for old code that assumes a single block
-       v3s16 blockpos = data->blockpos_requested;
        v3s16 blockpos_min = data->blockpos_min;
        v3s16 blockpos_max = data->blockpos_max;
 
@@ -475,6 +479,9 @@ void MapgenV6::makeChunk(BlockMakeData *data)
 
        generateExperimental();
 
+       // Create initial heightmap to limit caves
+       updateHeightmap(node_min, node_max);
+
        const s16 max_spread_amount = MAP_BLOCKSIZE;
        // Limit dirt flow area by 1 because mud is flown into neighbors.
        s16 mudflow_minpos = -max_spread_amount + 1;
@@ -499,6 +506,9 @@ void MapgenV6::makeChunk(BlockMakeData *data)
 
        }
 
+       // Update heightmap after mudflow
+       updateHeightmap(node_min, node_max);
+
        // Add dungeons
        if ((flags & MG_DUNGEONS) && (stone_surface_max_y >= node_min.Y)) {
                DungeonParams dp;
@@ -534,7 +544,7 @@ void MapgenV6::makeChunk(BlockMakeData *data)
        }
 
        // Add top and bottom side of water to transforming_liquid queue
-       //updateLiquid(&data->transforming_liquid, full_node_min, full_node_max);
+       updateLiquid(&data->transforming_liquid, full_node_min, full_node_max);
 
        // Grow grass
        growGrass();