mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
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
This commit is contained in:
parent
1fd9a07497
commit
c071efaa43
6 changed files with 648 additions and 448 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue