102 uint numNodes = textureSize / maxSize;
104 for (
uint x = 0; x < numNodes; x++)
107 for (
uint y = 0; y < numNodes; y++)
139 else if (node->
size > size && node->
size != this->minSize)
145 const uint halfNodeSize = node->
size / 2;
219 if (node->
size == size)
221 if (node->
x == coord.
x && node->
y == coord.
y)
227 else if (node->
size > size)
285 if (node->
size == size)
287 if (node->
x == coord.
x && node->
y == coord.
y)
292 else if (node->
size > size)
Allocates memory in chunks.
Definition arenaallocator.h:36
Implements a fixed size one-dimensional array.
Definition fixedarray.h:20
void Clear()
Clear the tree.
Definition occupancyquadtree.h:323
Memory::ArenaAllocator< sizeof(Node) *64 > allocator
Definition occupancyquadtree.h:72
Util::FixedArray< Util::FixedArray< Node > > topLevelNodes
Definition occupancyquadtree.h:73
uint minSize
Definition occupancyquadtree.h:74
bool RecursiveDeallocate(Node *node, Math::uint2 coord, uint size)
recursively traverse tree and deallocate
Definition occupancyquadtree.h:216
bool IsOccupied(const Math::uint2 coord, uint size)
check if region is alloced
Definition occupancyquadtree.h:344
bool RecursiveSearch(Node *node, Math::uint2 coord, uint size)
recursively traverse tree and find if allocated
Definition occupancyquadtree.h:282
OccupancyQuadTree()
constructor
Definition occupancyquadtree.h:81
bool RecursiveAllocate(Node *node, uint size, Math::uint2 &outCoord)
recursively traverse tree to allocate node from tree
Definition occupancyquadtree.h:126
void Setup(uint textureSize, uint maxSize, uint minSize)
setup with a world size and a biggest allocation size
Definition occupancyquadtree.h:99
Math::uint2 Allocate(uint size)
allocate a region, return region
Definition occupancyquadtree.h:197
bool Deallocate(const Math::uint2 coord, uint size)
deallocate region
Definition occupancyquadtree.h:263
const Util::FixedArray< Util::FixedArray< Node > > & GetTopLevelNodes()
~OccupancyQuadTree()
destructor
Definition occupancyquadtree.h:90
#define n_assert(exp)
Definition debug.h:50
A quad tree designed to return regions of free 2D space.
Definition String.cs:6
Nebula's scalar datatype.
unsigned int x
Definition scalar.h:115
unsigned int y
Definition scalar.h:115
Definition occupancyquadtree.h:38
uint occupancyCounter
Definition occupancyquadtree.h:56
uint y
Definition occupancyquadtree.h:58
Node * bottomRight
Definition occupancyquadtree.h:54
uint size
Definition occupancyquadtree.h:57
Node * topLeft
Definition occupancyquadtree.h:51
Node * topRight
Definition occupancyquadtree.h:52
Node()
Definition occupancyquadtree.h:39
Node * bottomLeft
Definition occupancyquadtree.h:53
bool occupied
Definition occupancyquadtree.h:55
uint x
Definition occupancyquadtree.h:58
unsigned int uint
Definition types.h:33