The type of the octant data.
Constructs a new octree.
Each octant can be uniquely identified by a 3D coordinate and a level. The tree depth is defined by the highest number of bits in the key design.
If the bounds of the octree are defined directly, the cell size will depend on the bounds and the key design. Alternatively, the bounds can be calculated from a desired cell size via KeyDesign.calculateBounds.
The type of the octant data.
The key design.
The upper bounds of the node.
The lower bounds of this node.
Removes all octants.
Checks if the given point lies inside this octree's boundaries.
A point.
Whether the given point lies inside this octree.
Recursively collects nodes that intersect with the specified region.
A region.
The nodes.
Removes a specific octant.
Children and empty intermediate parent octants will be removed as well.
A packed key or key coordinates.
The level of the octant.
Fetches all nodes of a specific depth level.
The depth level.
The nodes.
Calculates the depth of this tree.
The depth.
Finds nodes that intersect with the given ray. The intersecting nodes are sorted by distance, closest first.
A raycaster.
The intersecting nodes.
Returns the amount of depth levels.
The levels.
Returns a new octree iterator.
The octants returned by this iterator are augmented wrappers with explicit positional information.
The depth level.
An octree iterator.
An octree that subdivides space for fast spatial searches.
This linear implementation offers constant time access to octants at any depth level as well as octant neighbours and parent nodes.