1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-07-27 17:28:41 +00:00

Fix AreaStore's IDs persistence (#8888)

Improve documentation
Read old formats
Fix free ID function. Return first gap in map
This commit is contained in:
SmallJoker 2019-09-21 17:54:52 +02:00 committed by GitHub
parent 5fa614d97e
commit fec30e37ac
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 90 additions and 42 deletions

View file

@ -37,15 +37,15 @@ with this program; if not, write to the Free Software Foundation, Inc.,
struct Area {
Area() = default;
Area(u32 area_id) : id(area_id) {}
Area(const v3s16 &mine, const v3s16 &maxe) :
minedge(mine), maxedge(maxe)
Area(const v3s16 &mine, const v3s16 &maxe, u32 area_id = U32_MAX) :
id(area_id), minedge(mine), maxedge(maxe)
{
sortBoxVerticies(minedge, maxedge);
}
u32 id = U32_MAX;
u32 id;
v3s16 minedge, maxedge;
std::string data;
};
@ -109,7 +109,7 @@ protected:
virtual void getAreasForPosImpl(std::vector<Area *> *result, v3s16 pos) = 0;
/// Returns the next area ID and increments it.
u32 getNextId() { return m_next_id++; }
u32 getNextId() const;
// Note: This can't be an unordered_map, since all
// references would be invalidated on rehash.
@ -125,8 +125,6 @@ private:
/// If you modify this, call invalidateCache()
u8 m_cacheblock_radius = 64;
LRUCache<v3s16, std::vector<Area *> > m_res_cache;
u32 m_next_id = 0;
};