Skip to content

Commit

Permalink
Don't copy back already generated blocks on map generation
Browse files Browse the repository at this point in the history
  • Loading branch information
kwolekr committed Jul 7, 2014
1 parent 8b3ed78 commit a2e1b0f
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 7 deletions.
10 changes: 5 additions & 5 deletions src/map.cpp
Expand Up @@ -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());
Expand Down Expand Up @@ -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;
Expand All @@ -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);

Expand Down
5 changes: 3 additions & 2 deletions src/map.h
Expand Up @@ -543,10 +543,11 @@ class ManualMapVoxelManipulator : public VoxelManipulator
{m_map = map;}

void initialEmerge(v3s16 blockpos_min, v3s16 blockpos_max,
bool load_if_inexistent = true);
bool load_if_inexistent = true);

// This is much faster with big chunks of generated data
void blitBackAll(std::map<v3s16, MapBlock*> * modified_blocks);
void blitBackAll(std::map<v3s16, MapBlock*> * modified_blocks,
bool overwrite_generated = true);

protected:
bool m_create_area;
Expand Down

0 comments on commit a2e1b0f

Please sign in to comment.