diff options
author | kwolekr <kwolekr@minetest.net> | 2015-01-04 02:34:33 -0500 |
---|---|---|
committer | kwolekr <kwolekr@minetest.net> | 2015-01-04 02:42:31 -0500 |
commit | 7233a1228eb161cbcbb46c6e801cabd89ef3d2ab (patch) | |
tree | af3b728cb6052e3bd409ac39cd6b2db7c633076d /src/mapgen.h | |
parent | 060ae29eafbca089824cfbcedc9bc36b7fda5d5e (diff) | |
download | hax-minetest-server-7233a1228eb161cbcbb46c6e801cabd89ef3d2ab.tar.gz hax-minetest-server-7233a1228eb161cbcbb46c6e801cabd89ef3d2ab.zip |
Lighting: Fix nearly all issues
The cause of a single light source seemingly being lit without spread
was due to its creation in the +Y mapblock boundary layer during map
generation, which was ignored as the overtop. This overtop explicitly
needs to be omitted during sunlight propagation, however. To accomplish
this, Mapgen::calcLighting() was split into separate functions taking
separate parameters.
Additionally, do not diminish light too early during spread. This fixes the
output inconsistency between Map::updateLighting and Mapgen::calcLighting.
Diffstat (limited to 'src/mapgen.h')
-rw-r--r-- | src/mapgen.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/mapgen.h b/src/mapgen.h index aaa89d3bc..2ac66d354 100644 --- a/src/mapgen.h +++ b/src/mapgen.h @@ -156,7 +156,11 @@ public: void updateLiquid(UniqueQueue<v3s16> *trans_liquid, v3s16 nmin, v3s16 nmax); void setLighting(v3s16 nmin, v3s16 nmax, u8 light); void lightSpread(VoxelArea &a, v3s16 p, u8 light); + void calcLighting(v3s16 nmin, v3s16 nmax); + void propagateSunlight(v3s16 nmin, v3s16 nmax); + void spreadLight(v3s16 nmin, v3s16 nmax); + void calcLightingOld(v3s16 nmin, v3s16 nmax); virtual void makeChunk(BlockMakeData *data) {} |