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

◆ position_of()

template<typename PointT >
std::optional< PointT > MayaFlux::Kinesis::SpatialIndex< PointT >::position_of ( uint32_t  id) const

Read the position of an entity from the published snapshot.

Parameters
idEntity id.
Returns
Position, or std::nullopt if id is not present in the snapshot.

Definition at line 322 of file SpatialIndex.cpp.

323{
324#ifdef MAYAFLUX_PLATFORM_MACOS
325 auto [snap, slot] = acquire_snapshot();
326 if (!snap) {
327 return std::nullopt;
328 }
329 auto it = snap->id_to_slot.find(id);
330 std::optional<PointT> result = (it != snap->id_to_slot.end())
331 ? std::optional<PointT>(snap->positions[it->second])
332 : std::nullopt;
333 release_snapshot(slot);
334 return result;
335#else
336 auto snap_ptr = m_snapshot.load(std::memory_order_acquire);
337 if (!snap_ptr) {
338 return std::nullopt;
339 }
340 auto it = snap_ptr->id_to_slot.find(id);
341 if (it == snap_ptr->id_to_slot.end()) {
342 return std::nullopt;
343 }
344 return snap_ptr->positions[it->second];
345#endif
346}
std::atomic< std::shared_ptr< const SpatialSnapshot< PointT > > > m_snapshot