Return all entity ids and positions from the published snapshot.
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