diff options
author | sfan5 <sfan5@live.de> | 2022-06-20 21:24:28 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-20 21:24:28 +0200 |
commit | 0b41533763bc9f104a2da2e4191f4654b8d8dab4 (patch) | |
tree | 40e0ee5b892b1a81500ad666456b60a8e1341d51 /src/mapgen/mapgen.h | |
parent | e92a217bd19ee0b28890a7b33e5c6d7c037354cc (diff) | |
download | minetest-0b41533763bc9f104a2da2e4191f4654b8d8dab4.tar.gz minetest-0b41533763bc9f104a2da2e4191f4654b8d8dab4.tar.bz2 minetest-0b41533763bc9f104a2da2e4191f4654b8d8dab4.zip |
Annotate light spread functions with comments
Diffstat (limited to 'src/mapgen/mapgen.h')
-rw-r--r-- | src/mapgen/mapgen.h | 42 |
1 files changed, 40 insertions, 2 deletions
diff --git a/src/mapgen/mapgen.h b/src/mapgen/mapgen.h index 61db4f3b9..ef5de6029 100644 --- a/src/mapgen/mapgen.h +++ b/src/mapgen/mapgen.h @@ -190,12 +190,38 @@ public: void updateLiquid(UniqueQueue<v3s16> *trans_liquid, v3s16 nmin, v3s16 nmax); + /** + * Set light in entire area to fixed value. + * @param light Light value (contains both banks) + * @param nmin Area to operate on + * @param nmax ^ + */ void setLighting(u8 light, v3s16 nmin, v3s16 nmax); - void lightSpread(VoxelArea &a, std::queue<std::pair<v3s16, u8>> &queue, - const v3s16 &p, u8 light); + /** + * Run all lighting calculations. + * @param nmin Area to spread sunlight in + * @param nmax ^ + * @param full_nmin Area to recalculate light in + * @param full_nmax ^ + * @param propagate_shadow see propagateSunlight() + */ void calcLighting(v3s16 nmin, v3s16 nmax, v3s16 full_nmin, v3s16 full_nmax, bool propagate_shadow = true); + /** + * Spread sunlight from the area above downwards. + * Note that affected nodes have their night bank cleared so you want to + * run a light spread afterwards. + * @param nmin Area to operate on + * @param nmax ^ + * @param propagate_shadow Ignore obstructions above and spread sun anyway + */ void propagateSunlight(v3s16 nmin, v3s16 nmax, bool propagate_shadow); + /** + * Spread light in the given area. + * Artificial light is taken from nodedef, sunlight must already be set. + * @param nmin Area to operate on + * @param nmax ^ + */ void spreadLight(const v3s16 &nmin, const v3s16 &nmax); virtual void makeChunk(BlockMakeData *data) {} @@ -218,6 +244,18 @@ public: static void setDefaultSettings(Settings *settings); private: + /** + * Spread light to the node at the given position, add to queue if changed. + * The given light value is diminished once. + * @param a VoxelArea being operated on + * @param queue Queue for later lightSpread() calls + * @param p Node position + * @param light Light value (contains both banks) + * + */ + void lightSpread(VoxelArea &a, std::queue<std::pair<v3s16, u8>> &queue, + const v3s16 &p, u8 light); + // isLiquidHorizontallyFlowable() is a helper function for updateLiquid() // that checks whether there are floodable nodes without liquid beneath // the node at index vi. |