summaryrefslogtreecommitdiff
path: root/src/map.cpp
diff options
context:
space:
mode:
authorkwolekr <kwolekr@minetest.net>2014-07-07 01:51:04 -0400
committerkwolekr <kwolekr@minetest.net>2014-07-07 01:51:04 -0400
commita2e1b0fc7fa9a470f645e130115ce14a89aa2e02 (patch)
tree742904e94f288a680d237962228121ef81160262 /src/map.cpp
parent8b3ed78e53d8ad19d8dee3968430be258559214c (diff)
downloadminetest-a2e1b0fc7fa9a470f645e130115ce14a89aa2e02.tar.gz
minetest-a2e1b0fc7fa9a470f645e130115ce14a89aa2e02.tar.bz2
minetest-a2e1b0fc7fa9a470f645e130115ce14a89aa2e02.zip
Don't copy back already generated blocks on map generation
Diffstat (limited to 'src/map.cpp')
-rw-r--r--src/map.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/map.cpp b/src/map.cpp
index 9c06750b8..29bbbc0d9 100644
--- a/src/map.cpp
+++ b/src/map.cpp
@@ -2312,7 +2312,7 @@ void ServerMap::finishBlockMake(BlockMakeData *data,
{
// 70ms @cs=8
//TimeTaker timer("finishBlockMake() blitBackAll");
- data->vmanip->blitBackAll(&changed_blocks);
+ data->vmanip->blitBackAll(&changed_blocks, false);
}
EMERGE_DBG_OUT("finishBlockMake: changed_blocks.size()=" << changed_blocks.size());
@@ -3586,7 +3586,8 @@ void ManualMapVoxelManipulator::initialEmerge(v3s16 blockpos_min,
}
void ManualMapVoxelManipulator::blitBackAll(
- std::map<v3s16, MapBlock*> * modified_blocks)
+ std::map<v3s16, MapBlock*> *modified_blocks,
+ bool overwrite_generated)
{
if(m_area.getExtent() == v3s16(0,0,0))
return;
@@ -3601,10 +3602,9 @@ void ManualMapVoxelManipulator::blitBackAll(
v3s16 p = i->first;
MapBlock *block = m_map->getBlockNoCreateNoEx(p);
bool existed = !(i->second & VMANIP_BLOCK_DATA_INEXIST);
- if((existed == false) || (block == NULL))
- {
+ if ((existed == false) || (block == NULL) ||
+ (overwrite_generated == false && block->isGenerated() == true))
continue;
- }
block->copyFrom(*this);