summaryrefslogtreecommitdiff
path: root/src/mapgen.h
diff options
context:
space:
mode:
authorkwolekr <kwolekr@minetest.net>2015-01-04 02:34:33 -0500
committerkwolekr <kwolekr@minetest.net>2015-01-04 02:42:31 -0500
commit7233a1228eb161cbcbb46c6e801cabd89ef3d2ab (patch)
treeaf3b728cb6052e3bd409ac39cd6b2db7c633076d /src/mapgen.h
parent060ae29eafbca089824cfbcedc9bc36b7fda5d5e (diff)
downloadminetest-7233a1228eb161cbcbb46c6e801cabd89ef3d2ab.tar.gz
minetest-7233a1228eb161cbcbb46c6e801cabd89ef3d2ab.tar.bz2
minetest-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.h4
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) {}