MayaFlux 0.4.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ all()

template<typename PointT >
std::vector< std::pair< uint32_t, PointT > > MayaFlux::Kinesis::SpatialIndex< PointT >::all ( ) const

Return all entity ids and positions from the published snapshot.

Returns
Vector of (id, position) pairs. Empty if no snapshot published.

Definition at line 364 of file SpatialIndex.cpp.

365{
366 std::vector<std::pair<uint32_t, PointT>> result;
367
368#ifdef MAYAFLUX_PLATFORM_MACOS
369 auto [snap, slot] = acquire_snapshot();
370 if (!snap) {
371 return result;
372 }
373 result.reserve(snap->positions.size());
374 for (uint32_t i = 0; i < static_cast<uint32_t>(snap->positions.size()); ++i) {
375 result.emplace_back(snap->slot_to_id[i], snap->positions[i]);
376 }
377 release_snapshot(slot);
378#else
379 auto snap_ptr = m_snapshot.load(std::memory_order_acquire);
380 if (!snap_ptr) {
381 return result;
382 }
383 result.reserve(snap_ptr->positions.size());
384 for (uint32_t i = 0; i < static_cast<uint32_t>(snap_ptr->positions.size()); ++i) {
385 result.emplace_back(snap_ptr->slot_to_id[i], snap_ptr->positions[i]);
386 }
387#endif
388
389 return result;
390}
std::atomic< std::shared_ptr< const SpatialSnapshot< PointT > > > m_snapshot

Referenced by MayaFlux::Kinesis::ray_cast(), and MayaFlux::Kinesis::ray_cast_all().

+ Here is the caller graph for this function: