1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

commit before some more radical changes

This commit is contained in:
Perttu Ahola 2011-04-03 16:21:06 +03:00
parent 06eb0ad4d0
commit 01c2b003e1
12 changed files with 222 additions and 63 deletions

View file

@ -940,6 +940,15 @@ void Map::addNodeAndUpdate(v3s16 p, MapNode n,
n.setLight(bank, 0);
}
/*
If node lets sunlight through and is under sunlight, it has
sunlight too.
*/
if(node_under_sunlight && content_features(n.d).sunlight_propagates)
{
n.setLight(LIGHTBANK_DAY, LIGHT_SUN);
}
/*
Set the node on the map
*/
@ -947,13 +956,13 @@ void Map::addNodeAndUpdate(v3s16 p, MapNode n,
setNode(p, n);
/*
If node is under sunlight, take all sunlighted nodes under
it and clear light from them and from where the light has
been spread.
If node is under sunlight and doesn't let sunlight through,
take all sunlighted nodes under it and clear light from them
and from where the light has been spread.
TODO: This could be optimized by mass-unlighting instead
of looping
*/
if(node_under_sunlight)
if(node_under_sunlight && !content_features(n.d).sunlight_propagates)
{
s16 y = p.Y - 1;
for(;; y--){
@ -981,7 +990,7 @@ void Map::addNodeAndUpdate(v3s16 p, MapNode n,
break;
}
}
for(s32 i=0; i<2; i++)
{
enum LightBank bank = banks[i];
@ -1687,6 +1696,17 @@ void Map::transformLiquids(core::map<v3s16, MapBlock*> & modified_blocks)
//dstream<<"Map::transformLiquids(): loopcount="<<loopcount<<std::endl;
}
NodeMetadata* Map::getNodeMetadataClone(v3s16 p)
{
v3s16 blockpos = getNodeBlockPos(p);
v3s16 p_rel = p - blockpos*MAP_BLOCKSIZE;
MapBlock *block = getBlockNoCreateNoEx(blockpos);
if(block == NULL)
return NULL;
NodeMetadata *meta = block->m_node_metadata.getClone(p_rel);
return meta;
}
/*
ServerMap
*/