just backuppin' a working mapblock.cpp

This commit is contained in:
Perttu Ahola 2011-01-15 13:07:10 +02:00
parent 3fb0d2fb65
commit 83e083a667

@ -864,8 +864,14 @@ void MapBlock::updateMesh(u32 daynight_ratio)
- SUGG: This could be optimized - SUGG: This could be optimized
Turns sunglighted mud into grass. Turns sunglighted mud into grass.
if remove_light==true, sets non-sunlighted nodes black.
if black_air_left!=NULL, it is set to true if non-sunlighted
air is left in block.
*/ */
bool MapBlock::propagateSunlight(core::map<v3s16, bool> & light_sources) bool MapBlock::propagateSunlight(core::map<v3s16, bool> & light_sources,
bool remove_light, bool *black_air_left)
{ {
// Whether the sunlight at the top of the bottom block is valid // Whether the sunlight at the top of the bottom block is valid
bool block_below_is_valid = true; bool block_below_is_valid = true;
@ -960,18 +966,26 @@ bool MapBlock::propagateSunlight(core::map<v3s16, bool> & light_sources)
bool sunlight_should_go_down = (y==-1); bool sunlight_should_go_down = (y==-1);
// Fill rest with black (only transparent ones) /*
for(; y >= 0; y--){ Check rest through to the bottom of the block
*/
for(; y >= 0; y--)
{
v3s16 pos(x, y, z); v3s16 pos(x, y, z);
MapNode &n = getNodeRef(pos); MapNode &n = getNodeRef(pos);
if(n.light_propagates()) if(n.light_propagates())
{ {
if(black_air_left)
{
*black_air_left = true;
}
if(remove_light)
{
// Fill transparent nodes with black
n.setLight(LIGHTBANK_DAY, 0); n.setLight(LIGHTBANK_DAY, 0);
} }
else{
break;
} }
} }