34 std::span<
const std::pair<uint32_t, glm::vec3>> snapshot)
40 std::unordered_set<uint32_t> inside;
41 for (
const auto& [eid, pos] : snapshot) {
49 std::vector<Kinesis::QueryResult>
occupants;
51 for (
const auto& [eid, pos] : snapshot) {
52 if (inside.contains(eid)) {
53 const glm::vec3
offset = pos - center;
63 for (
const auto& [eid, pos] : snapshot) {
64 if (!inside.contains(eid))
69 if (!prev.contains(eid)) {
72 for (
const auto& [handle, action] :
m_entries)
76 for (
const auto& [handle, action] :
m_insides)
80 std::unordered_map<uint32_t, glm::vec3> where;
81 if (!
m_exits.empty() && !prev.empty()) {
82 where.reserve(snapshot.size());
83 for (
const auto& [eid, pos] : snapshot)
84 where.emplace(eid, pos);
87 for (uint32_t eid : prev) {
88 if (inside.contains(eid))
98 if (
const auto it = where.find(eid); it != where.end())
99 ctx.position = it->second;
100 for (
const auto& [handle, action] :
m_exits)
104 if (inside.empty()) {
107 prev = std::move(inside);