From c071efaa43ad3dcba7d60a7a67e942aae2a7dc83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1niel=20Juh=C3=A1sz?= Date: Thu, 20 Oct 2016 21:41:38 +0200 Subject: Improved lighting This commit rewrites the procedure that is responsible for light updating. this commit -provides iterative solutions for unlighting and light spreading -introduces a new priority queue-like container for the iteration -creates per-node MapBlock caching to reduce retrieving MapBlocks from the map -calculates with map block positions and in-block relative node coordinates -skips light updating if it is not necessary since the node's new light will be the same as its old light was --- src/mapnode.h | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/mapnode.h') diff --git a/src/mapnode.h b/src/mapnode.h index 2f6224f02..0bd61c554 100644 --- a/src/mapnode.h +++ b/src/mapnode.h @@ -191,6 +191,8 @@ struct MapNode param2 = p; } + void setLight(enum LightBank bank, u8 a_light, const ContentFeatures &f); + void setLight(enum LightBank bank, u8 a_light, INodeDefManager *nodemgr); /** @@ -202,6 +204,13 @@ struct MapNode u8 getLight(enum LightBank bank, INodeDefManager *nodemgr) const; + /*! + * Returns the node's light level from param1. + * If the node emits light, it is ignored. + * \param f the ContentFeatures of this node. + */ + u8 getLightRaw(enum LightBank bank, const ContentFeatures &f) const; + /** * This function differs from getLight(enum LightBank bank, INodeDefManager *nodemgr) * in that the ContentFeatures of the node in question are not retrieved by -- cgit v1.2.3