34 #include <spatialindex/SpatialIndex.h>
84 v3s16 minedge,
v3s16 maxedge,
bool accept_overlap) = 0;
121 static void cacheMiss(
void *data,
const v3s16 &mpos, std::vector<Area *> *dest);
137 v3s16 minedge,
v3s16 maxedge,
bool accept_overlap);
157 v3s16 minedge,
v3s16 maxedge,
bool accept_overlap);
163 SpatialIndex::ISpatialIndex *
m_tree =
nullptr;
174 virtual void visitNode(
const SpatialIndex::INode &in) {}
178 u32
id = in.getIdentifier();
185 virtual void visitData(std::vector<const SpatialIndex::IData *> &v)
187 for (
size_t i = 0; i < v.size(); i++)
Definition: areastore.h:54
AreaMap areas_map
Definition: areastore.h:117
AreaStore()
Definition: areastore.h:56
virtual void reserve(size_t count)
Definition: areastore.h:64
virtual void getAreasForPosImpl(std::vector< Area * > *result, v3s16 pos)=0
Implementation of getAreasForPos.
void setCacheParams(bool enabled, u8 block_radius, size_t limit)
Sets cache parameters.
Definition: areastore.cpp:139
static void cacheMiss(void *data, const v3s16 &mpos, std::vector< Area * > *dest)
Called by the cache when a value isn't found in the cache.
Definition: areastore.cpp:147
void getAreasForPos(std::vector< Area * > *result, v3s16 pos)
Finds areas that the passed position is contained in.
Definition: areastore.cpp:168
u32 getNextId() const
Returns the next area ID and increments it.
Definition: areastore.cpp:126
static AreaStore * getOptimalImplementation()
Definition: areastore.cpp:48
virtual ~AreaStore()=default
std::map< u32, Area > AreaMap
Definition: areastore.h:116
virtual bool insertArea(Area *a)=0
Add an area to the store.
const Area * getArea(u32 id) const
Returns a pointer to the area coresponding to the passed ID, or NULL if it doesn't exist.
Definition: areastore.cpp:57
LRUCache< v3s16, std::vector< Area * > > m_res_cache
Definition: areastore.h:127
virtual bool removeArea(u32 id)=0
Removes an area from the store by ID.
void serialize(std::ostream &is) const
Serializes the store's areas to a binary ostream.
Definition: areastore.cpp:65
virtual void getAreasInArea(std::vector< Area * > *result, v3s16 minedge, v3s16 maxedge, bool accept_overlap)=0
Finds areas that are completely contained inside the area defined by the passed edges.
void deserialize(std::istream &is)
Deserializes the Areas from a binary istream.
Definition: areastore.cpp:89
u8 m_cacheblock_radius
Range, in nodes, of the getAreasForPos cache.
Definition: areastore.h:126
void invalidateCache()
Invalidates the getAreasForPos cache.
Definition: areastore.cpp:119
size_t size() const
Definition: areastore.h:65
bool m_cache_enabled
Definition: areastore.h:123
Definition: container.h:255
Definition: areastore.h:166
~VectorResultVisitor()
Definition: areastore.h:172
virtual void visitData(const SpatialIndex::IData &in)
Definition: areastore.h:176
virtual void visitNode(const SpatialIndex::INode &in)
Definition: areastore.h:174
VectorResultVisitor(std::vector< Area * > *result, SpatialAreaStore *store)
Definition: areastore.h:168
virtual void visitData(std::vector< const SpatialIndex::IData * > &v)
Definition: areastore.h:185
SpatialAreaStore * m_store
Definition: areastore.h:192
std::vector< Area * > * m_result
Definition: areastore.h:193
Definition: areastore.h:149
SpatialIndex::ISpatialIndex * m_tree
Definition: areastore.h:163
virtual bool removeArea(u32 id)
Removes an area from the store by ID.
Definition: areastore.cpp:275
virtual ~SpatialAreaStore()
Definition: areastore.cpp:308
virtual void getAreasForPosImpl(std::vector< Area * > *result, v3s16 pos)
Implementation of getAreasForPos.
Definition: areastore.cpp:290
virtual void getAreasInArea(std::vector< Area * > *result, v3s16 minedge, v3s16 maxedge, bool accept_overlap)
Finds areas that are completely contained inside the area defined by the passed edges.
Definition: areastore.cpp:296
virtual bool insertArea(Area *a)
Add an area to the store.
Definition: areastore.cpp:263
SpatialIndex::IStorageManager * m_storagemanager
Definition: areastore.h:164
SpatialAreaStore()
Definition: areastore.cpp:314
Definition: areastore.h:131
virtual void getAreasInArea(std::vector< Area * > *result, v3s16 minedge, v3s16 maxedge, bool accept_overlap)
Finds areas that are completely contained inside the area defined by the passed edges.
Definition: areastore.cpp:233
virtual bool insertArea(Area *a)
Add an area to the store.
Definition: areastore.cpp:192
virtual void getAreasForPosImpl(std::vector< Area * > *result, v3s16 pos)
Implementation of getAreasForPos.
Definition: areastore.cpp:224
virtual void reserve(size_t count)
Definition: areastore.h:133
virtual bool removeArea(u32 id)
Removes an area from the store by ID.
Definition: areastore.cpp:206
std::vector< Area * > m_areas
Definition: areastore.h:143
core::vector3d< s16 > v3s16
Definition: irr_v3d.h:28
#define U32_MAX
Definition: irrlichttypes.h:44
void sortBoxVerticies(v3s16 &p1, v3s16 &p2)
Definition: numeric.h:130
Definition: areastore.h:39
v3s16 maxedge
Definition: areastore.h:49
u32 id
Definition: areastore.h:48
Area(u32 area_id)
Definition: areastore.h:40
std::string data
Definition: areastore.h:50
Area(const v3s16 &mine, const v3s16 &maxe, u32 area_id=U32_MAX)
Definition: areastore.h:42
v3s16 minedge
Definition: areastore.h:49