18#ifndef TRINITYCORE_BOUNDING_INTERVAL_HIERARCHY_WRAPPER_H
19#define TRINITYCORE_BOUNDING_INTERVAL_HIERARCHY_WRAPPER_H
23#include <unordered_map>
25template<
class T,
class BoundsFunc = BoundsTrait<T> >
28 template<
class RayCallback>
38 bool operator() (G3D::Ray
const& ray, std::size_t idx,
float& maxDist,
bool )
42 if (T
const* obj =
objects[idx])
52 if (T
const* obj =
objects[idx])
59 std::unordered_map<T const*, std::size_t>
m_obj2Idx;
104 template<
typename RayCallback>
105 void intersectRay(G3D::Ray
const& ray, RayCallback& intersectCallback,
float& maxDist)
112 template<
typename IsectCallback>
void intersectRay(G3D::Ray const &ray, RayCallback &intersectCallback, float &maxDist)
std::span< T const *const > getObjects() const
void intersectPoint(G3D::Vector3 const &point, IsectCallback &intersectCallback)
std::vector< T const * > m_objects
void remove(T const &obj)
std::unordered_map< T const *, std::size_t > m_obj2Idx
void insert(T const &obj)
void build(PrimArray const &primitives, BoundsFunc const &getBounds, uint32 leafSize=3, bool printStats=false)
void intersectPoint(G3D::Vector3 const &p, IsectCallback &intersectCallback) const
void intersectRay(G3D::Ray const &r, RayCallback &intersectCallback, float &maxDist, bool stopAtFirst=false) const
MDLCallback(RayCallback &callback, T const *const *objects_array, std::size_t objects_size)
bool operator()(G3D::Ray const &ray, std::size_t idx, float &maxDist, bool)
Intersect ray.