diff options
author | Dániel Juhász <juhdanad@gmail.com> | 2016-10-20 21:41:38 +0200 |
---|---|---|
committer | Ner'zhul <nerzhul@users.noreply.github.com> | 2016-10-27 08:04:42 +0200 |
commit | c071efaa43ad3dcba7d60a7a67e942aae2a7dc83 (patch) | |
tree | 005ca91912ba59cbe5b676b8067d82a5483ed1ce /src/voxelalgorithms.h | |
parent | 1fd9a07497c45364ed8396653501c6be2a2e2ade (diff) | |
download | minetest-c071efaa43ad3dcba7d60a7a67e942aae2a7dc83.tar.gz minetest-c071efaa43ad3dcba7d60a7a67e942aae2a7dc83.tar.bz2 minetest-c071efaa43ad3dcba7d60a7a67e942aae2a7dc83.zip |
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
Diffstat (limited to 'src/voxelalgorithms.h')
-rw-r--r-- | src/voxelalgorithms.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/voxelalgorithms.h b/src/voxelalgorithms.h index 2eba6a176..f2b2fde32 100644 --- a/src/voxelalgorithms.h +++ b/src/voxelalgorithms.h @@ -25,6 +25,9 @@ with this program; if not, write to the Free Software Foundation, Inc., #include <set> #include <map> +class Map; +class MapBlock; + namespace voxalgo { @@ -52,6 +55,23 @@ SunlightPropagateResult propagateSunlight(VoxelManipulator &v, VoxelArea a, std::set<v3s16> & light_sources, INodeDefManager *ndef); +/*! + * Updates the lighting on the map. + * The result will be correct only if + * no nodes were changed except the given one. + * + * \param p position of the changed node + * \param oldnode this node was overwritten on the map + * \param modified_blocks output, contains all map blocks that + * the function modified + */ +void update_lighting_node( + Map *map, + INodeDefManager *ndef, + v3s16 p, + MapNode oldnode, + std::map<v3s16, MapBlock*> &modified_blocks); + } // namespace voxalgo #endif |