|
MayaFlux 1.0.0
Digital-First Multimedia Processing Framework
|
Operator that acts on a network's slots over one block at a time. More...
#include <RelationOperators.hpp>
Inheritance diagram for MayaFlux::Nodes::Network::RelationOperator:
Collaboration diagram for MayaFlux::Nodes::Network::RelationOperator:Classes | |
| struct | Binding |
Public Member Functions | |
| void | begin_block () |
| Apply mapped parameters at the start of a block. | |
| virtual std::span< const double > | get_output_block (size_t) const |
| virtual size_t | get_output_count () const |
| void | map (std::string parameter, Source source) |
| Drive an operator parameter from a source. | |
| virtual bool | publishes_output () const |
| void | set_slots (std::vector< RelationSlot > &slots) noexcept |
| Supply the current slot storage. | |
| void | unmap (std::string_view parameter) |
| Remove the mapping of a parameter. | |
Public Member Functions inherited from MayaFlux::Nodes::Network::NetworkOperator | |
| virtual void | apply_one_to_one (std::string_view param, const std::shared_ptr< NodeNetwork > &source) |
| Apply ONE_TO_ONE parameter mapping (per-point control) | |
| virtual bool | demands_full_vertex_restore () const |
| Whether a downstream compute pass writes the network's vertex buffer in place each cycle, so the geometry producer must keep restoring the CPU-authoritative vertex data every frame. | |
| virtual std::string_view | get_type_name () const =0 |
| Type name for introspection. | |
| virtual void | process (float dt)=0 |
| Process for one batch cycle. | |
| virtual std::optional< double > | query_state (std::string_view query) const =0 |
| Query operator internal state. | |
| virtual void | set_parameter (std::string_view param, double value)=0 |
| Set operator parameter. | |
| virtual | ~NetworkOperator ()=default |
Protected Member Functions | |
| std::span< RelationSlot > | slots () const noexcept |
Private Attributes | |
| std::vector< Binding > | m_bindings |
| std::vector< RelationSlot > * | m_slots { nullptr } |
Operator that acts on a network's slots over one block at a time.
The network supplies the current slot storage through set_slots(), called once when the operator is added and again at the start of every process_batch(). An operator never caches a slot address past the current cycle, since the network's slot storage can grow (and reallocate) between cycles.
A concrete operator has no generic initialize()/reset() lifecycle: it sizes any internal state from its own constructor arguments.
Once per block the host calls begin_block(), which applies mapped parameters, then process(frames).
An operator has no clock of its own; process_batch() is its only cadence. Anything finer (per-sample or event-driven behavior) is composed from outside: node hooks, tasks, or direct calls to the operator's own public methods. An operator that acts only when called leaves process() empty. Operators communicate through slots: level and activity writes, and rendered blocks.
An operator that publishes signals overrides publishes_output(), get_output_count(), and get_output_block().
Definition at line 120 of file RelationOperators.hpp.