mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Implement propagateSunlight for VoxelManipulator
This commit is contained in:
parent
e15dca2a9f
commit
56496ad5d8
6 changed files with 337 additions and 13 deletions
|
@ -63,7 +63,7 @@ void VoxelManipulator::clear()
|
|||
m_flags = NULL;
|
||||
}
|
||||
|
||||
void VoxelManipulator::print(std::ostream &o, INodeDefManager *nodemgr,
|
||||
void VoxelManipulator::print(std::ostream &o, INodeDefManager *ndef,
|
||||
VoxelPrintMode mode)
|
||||
{
|
||||
v3s16 em = m_area.getExtent();
|
||||
|
@ -94,8 +94,9 @@ void VoxelManipulator::print(std::ostream &o, INodeDefManager *nodemgr,
|
|||
else
|
||||
{
|
||||
c = 'X';
|
||||
content_t m = m_data[m_area.index(x,y,z)].getContent();
|
||||
u8 pr = m_data[m_area.index(x,y,z)].param2;
|
||||
MapNode n = m_data[m_area.index(x,y,z)];
|
||||
content_t m = n.getContent();
|
||||
u8 pr = n.param2;
|
||||
if(mode == VOXELPRINT_MATERIAL)
|
||||
{
|
||||
if(m <= 9)
|
||||
|
@ -103,7 +104,7 @@ void VoxelManipulator::print(std::ostream &o, INodeDefManager *nodemgr,
|
|||
}
|
||||
else if(mode == VOXELPRINT_WATERPRESSURE)
|
||||
{
|
||||
if(nodemgr->get(m).isLiquid())
|
||||
if(ndef->get(m).isLiquid())
|
||||
{
|
||||
c = 'w';
|
||||
if(pr <= 9)
|
||||
|
@ -118,6 +119,21 @@ void VoxelManipulator::print(std::ostream &o, INodeDefManager *nodemgr,
|
|||
c = '#';
|
||||
}
|
||||
}
|
||||
else if(mode == VOXELPRINT_LIGHT_DAY)
|
||||
{
|
||||
if(ndef->get(m).light_source != 0)
|
||||
c = 'S';
|
||||
else if(ndef->get(m).light_propagates == false)
|
||||
c = 'X';
|
||||
else
|
||||
{
|
||||
u8 light = n.getLight(LIGHTBANK_DAY, ndef);
|
||||
if(light < 10)
|
||||
c = '0' + light;
|
||||
else
|
||||
c = 'a' + (light-10);
|
||||
}
|
||||
}
|
||||
}
|
||||
o<<c;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue