diff options
author | Perttu Ahola <celeron55@gmail.com> | 2012-03-29 00:28:48 +0300 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2012-03-29 00:28:48 +0300 |
commit | 02c035c548787a589c2bb813112b080a638e2972 (patch) | |
tree | 66ae02a8c29b5396bc86392e004c39ccc671b434 /src/map.cpp | |
parent | 418041d9067319431e4b6301851da117d2f4075b (diff) | |
download | minetest-02c035c548787a589c2bb813112b080a638e2972.tar.gz minetest-02c035c548787a589c2bb813112b080a638e2972.tar.bz2 minetest-02c035c548787a589c2bb813112b080a638e2972.zip |
Reduce EnvRef:set_node() time tenfold by postponing the dayNightDiff update until it is actually needed
Diffstat (limited to 'src/map.cpp')
-rw-r--r-- | src/map.cpp | 27 |
1 files changed, 14 insertions, 13 deletions
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<v3s16, MapBlock*> & 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"); } /* |