15 #ifndef CORE_ENVIRONMENT_KD_TREE_ENVIRONMENT_
16 #define CORE_ENVIRONMENT_KD_TREE_ENVIRONMENT_
86 void Clear()
override;
89 const Agent& query,
real_t squared_radius)
override;
92 void* criteria)
override;
96 const Agent* query_agent =
nullptr)
override;
103 std::unique_ptr<NanoflannImpl>
impl_;
AgentHandle GetAgentHandle(uint64_t idx) const
Contains code required by all agents.
virtual const Real3 & GetPosition() const =0
std::array< int32_t, 2 > threshold_dimensions_
void RoundOffGridDimensions(const std::array< real_t, 6 > &grid_dimensions)
std::array< int32_t, 2 > GetDimensionThresholds() const override
std::unique_ptr< NanoflannImpl > impl_
NanoFlannAdapter * nf_adapter_
void ForEachNeighbor(Functor< void, Agent *, real_t > &lambda, const Agent &query, real_t squared_radius) override
std::array< int32_t, 6 > grid_dimensions_
NeighborMutexBuilder * GetNeighborMutexBuilder() override
~KDTreeEnvironment() override
LoadBalanceInfo * GetLoadBalanceInfo() override
void UpdateImplementation() override
std::array< int32_t, 6 > GetDimensions() const override
Agent * GetAgent(const AgentUid &uid)
size_t GetNumAgents(int numa_node=-1) const
ResourceManager * GetResourceManager()
Returns the ResourceManager instance.
static Simulation * GetActive()
This function returns the currently active Simulation simulation.
MathArray< real_t, 3 > Real3
Aliases for a size 3 MathArray.
real_t kdtree_distance(const coord_t &p1, const idx_t idx_p2, size_t) const
AgentFlatIdxMap flat_idx_map_
size_t kdtree_get_point_count() const
Must return the number of data points.
bool kdtree_get_bbox(BBOX &) const
real_t kdtree_get_pt(const idx_t idx, int dim) const