Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
I
illuna-minetest
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Illuna-Minetest
illuna-minetest
Commits
8ae1e1f4
Commit
8ae1e1f4
authored
9 years ago
by
ShadowNinja
Browse files
Options
Downloads
Patches
Plain Diff
Add basic AreaStore method documentation
parent
6e9d7134
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/util/areastore.h
+30
-5
30 additions, 5 deletions
src/util/areastore.h
with
30 additions
and
5 deletions
src/util/areastore.h
+
30
−
5
View file @
8ae1e1f4
...
...
@@ -67,21 +67,36 @@ class AreaStore {
virtual
void
reserve
(
size_t
count
)
{};
size_t
size
()
const
{
return
areas_map
.
size
();
}
// Updates the area's ID
/// Add an area to the store.
/// Updates the area's ID.
virtual
bool
insertArea
(
Area
*
a
)
=
0
;
/// Removes an area from the store by ID.
/// @return 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
;
#if 0
typedef bool (*ForEachCallback)(const Area *a, void *arg);
// Calls a passed function for every stored area, until the
// callback returns true. If that happens, it returns true,
// if the search is exhausted, it returns false.
//
/
Calls a passed function for every stored area, until the
//
/
callback returns true. If that happens, it returns true,
//
/
if the search is exhausted, it returns false.
virtual bool forEach(ForEachCallback, void *arg=NULL) const = 0;
void serialize(std::ostream &is) const;
...
...
@@ -89,8 +104,15 @@ class AreaStore {
#endif
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
...
...
@@ -99,10 +121,13 @@ class AreaStore {
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
;
u8
m_cacheblock_radius
;
// if you modify this, call invalidateCache()
/// 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
;
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment