MayaFlux 0.4.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
InstanceOperator.hpp
Go to the documentation of this file.
1#pragma once
2
4#include "NetworkOperator.hpp"
5
7
8/**
9 * @class InstanceOperator
10 * @brief Abstract base for operators that process InstanceNetwork slots.
11 *
12 * Mirrors MeshOperator but operates over a flat GeometrySlot vector with
13 * no topological ordering. Subclasses implement process_slot().
14 */
15class MAYAFLUX_API InstanceOperator : public NetworkOperator {
16public:
17 ~InstanceOperator() override = default;
18
19 void set_slots(std::vector<GeometrySlot>& slots) { m_slots = &slots; }
20
21 void process(float dt) override
22 {
23 if (!m_slots)
24 return;
25
26 for (auto& slot : *m_slots)
27 process_slot(slot, dt);
28 }
29
30 virtual void process_slot(GeometrySlot& slot, float dt) = 0;
31
32 void set_parameter(std::string_view, double) override { }
33
34 [[nodiscard]] std::optional<double> query_state(std::string_view) const override
35 {
36 return std::nullopt;
37 }
38
39protected:
40 std::vector<GeometrySlot>* m_slots { nullptr };
41};
42
43} // namespace MayaFlux::Nodes::Network
void set_parameter(std::string_view, double) override
Set operator parameter.
void process(float dt) override
Process for one batch cycle.
virtual void process_slot(GeometrySlot &slot, float dt)=0
std::optional< double > query_state(std::string_view) const override
Query operator internal state.
void set_slots(std::vector< GeometrySlot > &slots)
Abstract base for operators that process InstanceNetwork slots.
Domain-agnostic interpretive lens for network processing.
Peer unit within an InstanceNetwork.