mirror of
https://github.com/luanti-org/luanti.git
synced 2025-09-05 18:41:05 +00:00
Light calculation: New bulk node lighting code
This commit introduces a new bulk node lighting algorithm to minimize lighting bugs during l-system tree generation, schematic placement and non-mapgen-object lua voxelmanip light calculation. If the block above the changed area is not loaded, it gets loaded to avoid lighting bugs. Light is updated as soon as write_to_map is called on a voxel manipulator, therefore update_map does nothing.
This commit is contained in:
parent
d785456b3f
commit
ab371cc934
10 changed files with 408 additions and 636 deletions
|
@ -25,6 +25,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
#include "serverenvironment.h"
|
||||
#include "nodedef.h"
|
||||
#include "treegen.h"
|
||||
#include "voxelalgorithms.h"
|
||||
|
||||
namespace treegen
|
||||
{
|
||||
|
@ -125,12 +126,8 @@ treegen::error spawn_ltree(ServerEnvironment *env, v3s16 p0,
|
|||
if (e != SUCCESS)
|
||||
return e;
|
||||
|
||||
vmanip.blitBackAll(&modified_blocks);
|
||||
voxalgo::blit_back_with_light(map, &vmanip, &modified_blocks);
|
||||
|
||||
// update lighting
|
||||
std::map<v3s16, MapBlock*> lighting_modified_blocks;
|
||||
lighting_modified_blocks.insert(modified_blocks.begin(), modified_blocks.end());
|
||||
map->updateLighting(lighting_modified_blocks, modified_blocks);
|
||||
// Send a MEET_OTHER event
|
||||
MapEditEvent event;
|
||||
event.type = MEET_OTHER;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue