MayaFlux
0.4.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
Expanse.cpp
Go to the documentation of this file.
1
#include "
Expanse.hpp
"
2
3
#include "glm/vec3.hpp"
4
5
namespace
MayaFlux::Nexus
{
6
7
void
Expanse::evaluate
(uint32_t fabric_id,
8
std::span<
const
std::pair<uint32_t, glm::vec3>> snapshot)
9
{
10
auto
& prev =
m_occupants_by_fabric
[fabric_id];
11
12
std::unordered_set<uint32_t> inside;
13
for
(
const
auto
& [eid, pos] : snapshot) {
14
if
(
m_contains
&&
m_contains
(pos))
15
inside.insert(eid);
16
}
17
18
if
(
m_on_enter
) {
19
for
(uint32_t eid : inside) {
20
if
(!prev.contains(eid))
21
m_on_enter
(eid);
22
}
23
}
24
25
if
(
m_on_exit
) {
26
for
(uint32_t eid : prev) {
27
if
(!inside.contains(eid))
28
m_on_exit
(eid);
29
}
30
}
31
32
if
(inside.empty()) {
33
m_occupants_by_fabric
.erase(fabric_id);
34
}
else
{
35
prev = std::move(inside);
36
}
37
}
38
39
}
// namespace MayaFlux::Nexus
Expanse.hpp
MayaFlux::Nexus::Expanse::m_on_enter
CrossingFn m_on_enter
Definition
Expanse.hpp:151
MayaFlux::Nexus::Expanse::m_occupants_by_fabric
std::unordered_map< uint32_t, std::unordered_set< uint32_t > > m_occupants_by_fabric
Definition
Expanse.hpp:155
MayaFlux::Nexus::Expanse::m_contains
ContainsFn m_contains
Definition
Expanse.hpp:150
MayaFlux::Nexus::Expanse::evaluate
void evaluate(uint32_t fabric_id, std::span< const std::pair< uint32_t, glm::vec3 > > snapshot)
Evaluate a spatial snapshot from one Fabric against this Expanse.
Definition
Expanse.cpp:7
MayaFlux::Nexus::Expanse::m_on_exit
CrossingFn m_on_exit
Definition
Expanse.hpp:152
MayaFlux::Nexus
Definition
Expanse.cpp:5
src
MayaFlux
Nexus
Expanse.cpp
Generated by
1.9.8