MayaFlux 1.0.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
MayaFlux::Nodes::Network::RelationOperator Class Reference

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 }
 

Detailed Description

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.


The documentation for this class was generated from the following file: