From 02c035c548787a589c2bb813112b080a638e2972 Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Thu, 29 Mar 2012 00:28:48 +0300 Subject: Reduce EnvRef:set_node() time tenfold by postponing the dayNightDiff update until it is actually needed --- src/map.cpp | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) (limited to 'src/map.cpp') diff --git a/src/map.cpp b/src/map.cpp index 835aca4fb..e24bac2f2 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -923,7 +923,7 @@ void Map::updateLighting(core::map & a_blocks, i.atEnd() == false; i++) { MapBlock *block = i.getNode()->getValue(); - block->updateDayNightDiff(); + block->expireDayNightDiff(); } } @@ -1084,7 +1084,7 @@ void Map::addNodeAndUpdate(v3s16 p, MapNode n, i.atEnd() == false; i++) { MapBlock *block = i.getNode()->getValue(); - block->updateDayNightDiff(); + block->expireDayNightDiff(); } /* @@ -1260,7 +1260,7 @@ void Map::removeNodeAndUpdate(v3s16 p, i.atEnd() == false; i++) { MapBlock *block = i.getNode()->getValue(); - block->updateDayNightDiff(); + block->expireDayNightDiff(); } /* @@ -1297,6 +1297,7 @@ void Map::removeNodeAndUpdate(v3s16 p, bool Map::addNodeWithEvent(v3s16 p, MapNode n) { + ScopeProfiler sp(g_profiler, "Map::addNodeWithEvent", SPT_AVG); MapEditEvent event; event.type = MEET_ADDNODE; event.p = p; @@ -1352,12 +1353,12 @@ bool Map::removeNodeWithEvent(v3s16 p) return succeeded; } -bool Map::dayNightDiffed(v3s16 blockpos) +bool Map::getDayNightDiff(v3s16 blockpos) { try{ v3s16 p = blockpos + v3s16(0,0,0); MapBlock *b = getBlockNoCreate(p); - if(b->dayNightDiffed()) + if(b->getDayNightDiff()) return true; } catch(InvalidPositionException &e){} @@ -1365,21 +1366,21 @@ bool Map::dayNightDiffed(v3s16 blockpos) try{ v3s16 p = blockpos + v3s16(-1,0,0); MapBlock *b = getBlockNoCreate(p); - if(b->dayNightDiffed()) + if(b->getDayNightDiff()) return true; } catch(InvalidPositionException &e){} try{ v3s16 p = blockpos + v3s16(0,-1,0); MapBlock *b = getBlockNoCreate(p); - if(b->dayNightDiffed()) + if(b->getDayNightDiff()) return true; } catch(InvalidPositionException &e){} try{ v3s16 p = blockpos + v3s16(0,0,-1); MapBlock *b = getBlockNoCreate(p); - if(b->dayNightDiffed()) + if(b->getDayNightDiff()) return true; } catch(InvalidPositionException &e){} @@ -1387,21 +1388,21 @@ bool Map::dayNightDiffed(v3s16 blockpos) try{ v3s16 p = blockpos + v3s16(1,0,0); MapBlock *b = getBlockNoCreate(p); - if(b->dayNightDiffed()) + if(b->getDayNightDiff()) return true; } catch(InvalidPositionException &e){} try{ v3s16 p = blockpos + v3s16(0,1,0); MapBlock *b = getBlockNoCreate(p); - if(b->dayNightDiffed()) + if(b->getDayNightDiff()) return true; } catch(InvalidPositionException &e){} try{ v3s16 p = blockpos + v3s16(0,0,1); MapBlock *b = getBlockNoCreate(p); - if(b->dayNightDiffed()) + if(b->getDayNightDiff()) return true; } catch(InvalidPositionException &e){} @@ -2294,12 +2295,12 @@ MapBlock* ServerMap::finishBlockMake(mapgen::BlockMakeData *data, /* Update day/night difference cache of the MapBlocks */ - block->updateDayNightDiff(); + block->expireDayNightDiff(); /* Set block as modified */ block->raiseModified(MOD_STATE_WRITE_NEEDED, - "finishBlockMake updateDayNightDiff"); + "finishBlockMake expireDayNightDiff"); } /* -- cgit v1.2.3