aboutsummaryrefslogtreecommitdiff
path: root/src/mapgen/mapgen.h
diff options
context:
space:
mode:
authorsfan5 <sfan5@live.de>2022-06-20 21:24:28 +0200
committerGitHub <noreply@github.com>2022-06-20 21:24:28 +0200
commit0b41533763bc9f104a2da2e4191f4654b8d8dab4 (patch)
tree40e0ee5b892b1a81500ad666456b60a8e1341d51 /src/mapgen/mapgen.h
parente92a217bd19ee0b28890a7b33e5c6d7c037354cc (diff)
downloadminetest-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.h42
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.