aboutsummaryrefslogtreecommitdiff
ModeNameSize
-rw-r--r--.clang-format761logplain
-rw-r--r--.clang-tidy400logplain
-rw-r--r--.gitattributes28logplain
d---------.github211logplain
-rw-r--r--.gitignore1419logplain
-rw-r--r--.gitlab-ci.yml8698logplain
-rw-r--r--.luacheckrc1403logplain
-rw-r--r--.mailmap2087logplain
-rw-r--r--CMakeLists.txt11545logplain
-rw-r--r--Dockerfile2183logplain
-rw-r--r--LICENSE.txt6568logplain
-rw-r--r--README.md22667logplain
d---------build / android34logplain
d---------builtin310logplain
d---------client71logplain
d---------clientmods / preview34logplain
d---------cmake / Modules34logplain
d---------doc618logplain
d---------fonts2109logplain
d---------games / devtest34logplain
d---------lib94logplain
-rw-r--r--minetest.conf.example100752logplain
d---------misc669logplain
d---------mods41logplain
d---------po1601logplain
d---------src6706logplain
d---------textures81logplain
d---------util342logplain
rn Whether the area was in the store and removed. virtual bool removeArea(u32 id) = 0; /// Finds areas that the passed position is contained in. /// Stores output in passed vector. void getAreasForPos(std::vector<Area *> *result, v3s16 pos); /// Finds areas that are completely contained inside the area defined /// by the passed edges. If @p accept_overlap is true this finds any /// areas that intersect with the passed area at any point. virtual void getAreasInArea(std::vector<Area *> *result, v3s16 minedge, v3s16 maxedge, bool accept_overlap) = 0; /// Sets cache parameters. void setCacheParams(bool enabled, u8 block_radius, size_t limit); /// Returns a pointer to the area coresponding to the passed ID, /// or NULL if it doesn't exist. const Area *getArea(u32 id) const; /// Serializes the store's areas to a binary ostream. void serialize(std::ostream &is) const; /// Deserializes the Areas from a binary istream. /// This does not currently clear the AreaStore before adding the /// areas, making it possible to deserialize multiple serialized /// AreaStores. void deserialize(std::istream &is); protected: /// Invalidates the getAreasForPos cache. /// Call after adding or removing an area. void invalidateCache(); /// Implementation of getAreasForPos. /// getAreasForPos calls this if the cache is disabled. virtual void getAreasForPosImpl(std::vector<Area *> *result, v3s16 pos) = 0; /// Returns the next area ID and increments it. u32 getNextId() { return m_next_id++; } // Note: This can't be an unordered_map, since all // references would be invalidated on rehash. typedef std::map<u32, Area> AreaMap; AreaMap areas_map; private: /// Called by the cache when a value isn't found in the cache. static void cacheMiss(void *data, const v3s16 &mpos, std::vector<Area *> *dest); bool m_cache_enabled; /// Range, in nodes, of the getAreasForPos cache. /// If you modify this, call invalidateCache() u8 m_cacheblock_radius; LRUCache<v3s16, std::vector<Area *> > m_res_cache; u32 m_next_id; }; class VectorAreaStore : public AreaStore { public: virtual void reserve(size_t count) { m_areas.reserve(count); } virtual bool insertArea(Area *a); virtual bool removeArea(u32 id); virtual void getAreasInArea(std::vector<Area *> *result, v3s16 minedge, v3s16 maxedge, bool accept_overlap); protected: virtual void getAreasForPosImpl(std::vector<Area *> *result, v3s16 pos); private: std::vector<Area *> m_areas; }; #if USE_SPATIAL class SpatialAreaStore : public AreaStore { public: SpatialAreaStore(); virtual ~SpatialAreaStore(); virtual bool insertArea(Area *a); virtual bool removeArea(u32 id); virtual void getAreasInArea(std::vector<Area *> *result, v3s16 minedge, v3s16 maxedge, bool accept_overlap); protected: virtual void getAreasForPosImpl(std::vector<Area *> *result, v3s16 pos); private: SpatialIndex::ISpatialIndex *m_tree;