]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/map.cpp
Rework Range
[dragonfireclient.git] / src / map.cpp
index ef7eddb39ebd57f139dabe02c0f08f4c3c9821c6..6d53351efeed2b1bc15ae8f773823063fff4686a 100644 (file)
@@ -139,6 +139,21 @@ MapBlock * Map::getBlockNoCreate(v3s16 p3d)
        return block;
 }
 
+void Map::listAllLoadedBlocks(std::vector<v3s16> &dst)
+{
+       for (auto &sector_it : m_sectors) {
+               MapSector *sector = sector_it.second;
+
+               MapBlockVect blocks;
+               sector->getBlocks(blocks);
+
+               for (MapBlock *block : blocks) {
+                       v3s16 p = block->getPos();
+                       dst.push_back(p);
+               }
+       }
+}
+
 bool Map::isNodeUnderground(v3s16 p)
 {
        v3s16 blockpos = getNodeBlockPos(p);
@@ -1345,6 +1360,9 @@ bool ServerMap::initBlockMake(v3s16 blockpos, BlockMakeData *data)
        v3s16 bpmin = EmergeManager::getContainingChunk(blockpos, csize);
        v3s16 bpmax = bpmin + v3s16(1, 1, 1) * (csize - 1);
 
+       if (!m_chunks_in_progress.insert(bpmin).second)
+               return false;
+
        bool enable_mapgen_debug_info = m_emerge->enable_mapgen_debug_info;
        EMERGE_DBG_OUT("initBlockMake(): " PP(bpmin) " - " PP(bpmax));
 
@@ -1360,7 +1378,6 @@ bool ServerMap::initBlockMake(v3s16 blockpos, BlockMakeData *data)
        data->seed = getSeed();
        data->blockpos_min = bpmin;
        data->blockpos_max = bpmax;
-       data->blockpos_requested = blockpos;
        data->nodedef = m_nodedef;
 
        /*
@@ -1482,6 +1499,7 @@ void ServerMap::finishBlockMake(BlockMakeData *data,
                NOTE: Will be saved later.
        */
        //save(MOD_STATE_WRITE_AT_UNLOAD);
+       m_chunks_in_progress.erase(bpmin);
 }
 
 MapSector *ServerMap::createSector(v2s16 p2d)
@@ -1805,21 +1823,6 @@ void ServerMap::listAllLoadableBlocks(std::vector<v3s16> &dst)
                dbase_ro->listAllLoadableBlocks(dst);
 }
 
-void ServerMap::listAllLoadedBlocks(std::vector<v3s16> &dst)
-{
-       for (auto &sector_it : m_sectors) {
-               MapSector *sector = sector_it.second;
-
-               MapBlockVect blocks;
-               sector->getBlocks(blocks);
-
-               for (MapBlock *block : blocks) {
-                       v3s16 p = block->getPos();
-                       dst.push_back(p);
-               }
-       }
-}
-
 MapDatabase *ServerMap::createDatabase(
        const std::string &name,
        const std::string &savedir,