neoGFX
C++ GPU-oriented GUI library and app/game creation framework.
neogfx::aabb_quadtree< BucketSize, Allocator > Class Template Reference

#include <aabb_quadtree.hpp>

Public Types

typedef Allocator allocator_type
 
typedef allocator_type::pointer pointer
 
typedef allocator_type::const_pointer const_pointer
 
typedef allocator_type::reference reference
 
typedef allocator_type::const_reference const_reference
 
typedef const void * const_iterator
 
typedef void * iterator
 

Public Member Functions

 aabb_quadtree (const aabb_2d &aRootAabb=aabb_2d{ vec2{-4096.0, -4096.0}, vec2{4096.0, 4096.0} }, dimension aMinimumQuadrantSize=16.0, const allocator_type &aAllocator=allocator_type{})
 
dimension minimum_quadrant_size () const
 
template<typename IterObject >
IterObject full_update (IterObject aStart, IterObject aEnd)
 
template<typename IterObject >
IterObject dynamic_update (IterObject aStart, IterObject aEnd)
 
template<typename IterObject , typename CollisionAction >
IterObject collisions (IterObject aStart, IterObject aEnd, CollisionAction aCollisionAction) const
 
template<typename ResultContainer >
void pick (const vec2 &aPoint, ResultContainer &aResult, std::function< bool(reference, const vec2 &aPoint)> aColliderPredicate=[](reference, const vec2 &) { return true;}) const
 
template<typename Visitor >
void visit_aabbs (const Visitor &aVisitor) const
 
void insert (reference aItem)
 
void remove (reference aItem)
 
uint32_t count () const
 
uint32_t depth () const
 
const node & root_node () const
 

Detailed Description

template<std::size_t BucketSize = 16, typename Allocator = boost::fast_pool_allocator<i_collidable_object>>
class neogfx::aabb_quadtree< BucketSize, Allocator >

Definition at line 31 of file aabb_quadtree.hpp.

Member Typedef Documentation

◆ allocator_type

template<std::size_t BucketSize = 16, typename Allocator = boost::fast_pool_allocator<i_collidable_object>>
typedef Allocator neogfx::aabb_quadtree< BucketSize, Allocator >::allocator_type

Definition at line 34 of file aabb_quadtree.hpp.

◆ const_iterator

template<std::size_t BucketSize = 16, typename Allocator = boost::fast_pool_allocator<i_collidable_object>>
typedef const void* neogfx::aabb_quadtree< BucketSize, Allocator >::const_iterator

Definition at line 40 of file aabb_quadtree.hpp.

◆ const_pointer

template<std::size_t BucketSize = 16, typename Allocator = boost::fast_pool_allocator<i_collidable_object>>
typedef allocator_type::const_pointer neogfx::aabb_quadtree< BucketSize, Allocator >::const_pointer

Definition at line 36 of file aabb_quadtree.hpp.

◆ const_reference

template<std::size_t BucketSize = 16, typename Allocator = boost::fast_pool_allocator<i_collidable_object>>
typedef allocator_type::const_reference neogfx::aabb_quadtree< BucketSize, Allocator >::const_reference

Definition at line 38 of file aabb_quadtree.hpp.

◆ iterator

template<std::size_t BucketSize = 16, typename Allocator = boost::fast_pool_allocator<i_collidable_object>>
typedef void* neogfx::aabb_quadtree< BucketSize, Allocator >::iterator

Definition at line 41 of file aabb_quadtree.hpp.

◆ pointer

template<std::size_t BucketSize = 16, typename Allocator = boost::fast_pool_allocator<i_collidable_object>>
typedef allocator_type::pointer neogfx::aabb_quadtree< BucketSize, Allocator >::pointer

Definition at line 35 of file aabb_quadtree.hpp.

◆ reference

template<std::size_t BucketSize = 16, typename Allocator = boost::fast_pool_allocator<i_collidable_object>>
typedef allocator_type::reference neogfx::aabb_quadtree< BucketSize, Allocator >::reference

Definition at line 37 of file aabb_quadtree.hpp.

Constructor & Destructor Documentation

◆ aabb_quadtree()

template<std::size_t BucketSize = 16, typename Allocator = boost::fast_pool_allocator<i_collidable_object>>
neogfx::aabb_quadtree< BucketSize, Allocator >::aabb_quadtree ( const aabb_2d aRootAabb = aabb_2dvec2{-4096.0, -4096.0}, vec2{4096.0, 4096.0} },
dimension  aMinimumQuadrantSize = 16.0,
const allocator_type aAllocator = allocator_type{} 
)
inline

Definition at line 318 of file aabb_quadtree.hpp.

Member Function Documentation

◆ collisions()

template<std::size_t BucketSize = 16, typename Allocator = boost::fast_pool_allocator<i_collidable_object>>
template<typename IterObject , typename CollisionAction >
IterObject neogfx::aabb_quadtree< BucketSize, Allocator >::collisions ( IterObject  aStart,
IterObject  aEnd,
CollisionAction  aCollisionAction 
) const
inline

Definition at line 360 of file aabb_quadtree.hpp.

◆ count()

template<std::size_t BucketSize = 16, typename Allocator = boost::fast_pool_allocator<i_collidable_object>>
uint32_t neogfx::aabb_quadtree< BucketSize, Allocator >::count ( ) const
inline

Definition at line 409 of file aabb_quadtree.hpp.

◆ depth()

template<std::size_t BucketSize = 16, typename Allocator = boost::fast_pool_allocator<i_collidable_object>>
uint32_t neogfx::aabb_quadtree< BucketSize, Allocator >::depth ( ) const
inline

Definition at line 413 of file aabb_quadtree.hpp.

◆ dynamic_update()

template<std::size_t BucketSize = 16, typename Allocator = boost::fast_pool_allocator<i_collidable_object>>
template<typename IterObject >
IterObject neogfx::aabb_quadtree< BucketSize, Allocator >::dynamic_update ( IterObject  aStart,
IterObject  aEnd 
)
inline

Definition at line 348 of file aabb_quadtree.hpp.

◆ full_update()

template<std::size_t BucketSize = 16, typename Allocator = boost::fast_pool_allocator<i_collidable_object>>
template<typename IterObject >
IterObject neogfx::aabb_quadtree< BucketSize, Allocator >::full_update ( IterObject  aStart,
IterObject  aEnd 
)
inline

Definition at line 334 of file aabb_quadtree.hpp.

◆ insert()

template<std::size_t BucketSize = 16, typename Allocator = boost::fast_pool_allocator<i_collidable_object>>
void neogfx::aabb_quadtree< BucketSize, Allocator >::insert ( reference  aItem)
inline

Definition at line 400 of file aabb_quadtree.hpp.

◆ minimum_quadrant_size()

template<std::size_t BucketSize = 16, typename Allocator = boost::fast_pool_allocator<i_collidable_object>>
dimension neogfx::aabb_quadtree< BucketSize, Allocator >::minimum_quadrant_size ( ) const
inline

Definition at line 329 of file aabb_quadtree.hpp.

◆ pick()

template<std::size_t BucketSize = 16, typename Allocator = boost::fast_pool_allocator<i_collidable_object>>
template<typename ResultContainer >
void neogfx::aabb_quadtree< BucketSize, Allocator >::pick ( const vec2 aPoint,
ResultContainer &  aResult,
std::function< bool(reference, const vec2 &aPoint)>  aColliderPredicate = [](reference, const vec2&) { return true; } 
) const
inline

Definition at line 386 of file aabb_quadtree.hpp.

◆ remove()

template<std::size_t BucketSize = 16, typename Allocator = boost::fast_pool_allocator<i_collidable_object>>
void neogfx::aabb_quadtree< BucketSize, Allocator >::remove ( reference  aItem)
inline

Definition at line 404 of file aabb_quadtree.hpp.

◆ root_node()

template<std::size_t BucketSize = 16, typename Allocator = boost::fast_pool_allocator<i_collidable_object>>
const node& neogfx::aabb_quadtree< BucketSize, Allocator >::root_node ( ) const
inline

Definition at line 418 of file aabb_quadtree.hpp.

◆ visit_aabbs()

template<std::size_t BucketSize = 16, typename Allocator = boost::fast_pool_allocator<i_collidable_object>>
template<typename Visitor >
void neogfx::aabb_quadtree< BucketSize, Allocator >::visit_aabbs ( const Visitor &  aVisitor) const
inline

Definition at line 395 of file aabb_quadtree.hpp.


The documentation for this class was generated from the following file: