diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/map.cpp | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/src/map.cpp b/src/map.cpp index f4f1668c7..09cab79e2 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -860,13 +860,11 @@ void Map::updateLighting(core::map<v3s16, MapBlock*> & a_blocks, The lighting value of the node should be left as-is after changing other values. This sets the lighting value to 0. */ -/*void Map::nodeAddedUpdate(v3s16 p, u8 lightwas, - core::map<v3s16, MapBlock*> &modified_blocks)*/ void Map::addNodeAndUpdate(v3s16 p, MapNode n, core::map<v3s16, MapBlock*> &modified_blocks) { /*PrintInfo(m_dout); - m_dout<<DTIME<<"Map::nodeAddedUpdate(): p=(" + m_dout<<DTIME<<"Map::addNodeAndUpdate(): p=(" <<p.X<<","<<p.Y<<","<<p.Z<<")"<<std::endl;*/ /* @@ -898,11 +896,12 @@ void Map::addNodeAndUpdate(v3s16 p, MapNode n, { } - if(n.d != CONTENT_TORCH) + /* + If the new node doesn't propagate sunlight and there is + grass below, change it to mud + */ + if(content_features(n.d).sunlight_propagates == false) { - /* - If there is grass below, change it to mud - */ try{ MapNode bottomnode = getNode(bottompos); @@ -918,6 +917,19 @@ void Map::addNodeAndUpdate(v3s16 p, MapNode n, } } + /* + If the new node is mud and it is under sunlight, change it + to grass + */ + if(n.d == CONTENT_MUD && node_under_sunlight) + { + n.d = CONTENT_GRASS; + } + + /* + Remove all light that has come out of this node + */ + enum LightBank banks[] = { LIGHTBANK_DAY, @@ -947,6 +959,10 @@ void Map::addNodeAndUpdate(v3s16 p, MapNode n, n.setLight(bank, 0); } + + /* + Set the node on the map + */ setNode(p, n); @@ -975,7 +991,6 @@ void Map::addNodeAndUpdate(v3s16 p, MapNode n, if(n2.getLight(LIGHTBANK_DAY) == LIGHT_SUN) { - //m_dout<<DTIME<<"doing"<<std::endl; unLightNeighbors(LIGHTBANK_DAY, n2pos, n2.getLight(LIGHTBANK_DAY), light_sources, modified_blocks); @@ -993,7 +1008,6 @@ void Map::addNodeAndUpdate(v3s16 p, MapNode n, /* Spread light from all nodes that might be capable of doing so - TODO: Convert to spreadLight */ spreadLight(bank, light_sources, modified_blocks); } |