]> git.lizzy.rs Git - minetest.git/blobdiff - src/mapblock.h
Clean up serialization
[minetest.git] / src / mapblock.h
index 83f13f30287be8007fe51d79b69d0aed31623880..6b5015cabdb5f1177e9679a632fb658c51180112 100644 (file)
@@ -30,7 +30,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "modifiedstate.h"
 #include "util/numeric.h" // getContainerPos
 #include "settings.h"
-#include "mapgen.h"
+#include "mapgen/mapgen.h"
 
 class Map;
 class NodeMetadataList;
@@ -63,7 +63,8 @@ class VoxelManipulator;
 #define MOD_REASON_STATIC_DATA_REMOVED       (1 << 16)
 #define MOD_REASON_STATIC_DATA_CHANGED       (1 << 17)
 #define MOD_REASON_EXPIRE_DAYNIGHTDIFF       (1 << 18)
-#define MOD_REASON_UNKNOWN                   (1 << 19)
+#define MOD_REASON_VMANIP                    (1 << 19)
+#define MOD_REASON_UNKNOWN                   (1 << 20)
 
 ////
 //// MapBlock itself
@@ -113,6 +114,8 @@ class MapBlock
                } else if (mod == m_modified) {
                        m_modified_reason |= reason;
                }
+               if (mod == MOD_STATE_WRITE_NEEDED)
+                       contents_cached = false;
        }
 
        inline u32 getModified()
@@ -347,10 +350,6 @@ class MapBlock
                        setNode(x0 + x, y0 + y, z0 + z, node);
        }
 
-       // See comments in mapblock.cpp
-       bool propagateSunlight(std::set<v3s16> &light_sources,
-               bool remove_light=false, bool *black_air_left=NULL);
-
        // Copies data to VoxelManipulator to getPosRelative()
        void copyTo(VoxelManipulator &dst);
 
@@ -532,6 +531,14 @@ class MapBlock
 
        static const u32 nodecount = MAP_BLOCKSIZE * MAP_BLOCKSIZE * MAP_BLOCKSIZE;
 
+       //// ABM optimizations ////
+       // Cache of content types
+       std::unordered_set<content_t> contents;
+       // True if content types are cached
+       bool contents_cached = false;
+       // True if we never want to cache content types for this block
+       bool do_not_cache_contents = false;
+
 private:
        /*
                Private member variables