Processes a single sample from all registered nodes.
- Returns
- Combined output sample from all nodes
This method processes each registered node and combines their outputs into a single sample. It is typically called in a loop to process multiple samples, but can also be used for single-sample processing.
Definition at line 111 of file RootNode.cpp.
112{
114 return 0.;
115
116 auto sample = 0.;
117
119
120 uint32_t state = node->m_state.load();
122 auto generator = std::dynamic_pointer_cast<Nodes::Generator::Generator>(node);
123 if (generator && generator->should_mock_process()) {
124 generator->process_sample();
125 } else {
126 sample += node->process_sample();
127 }
129 } else {
130 sample += node->get_last_output();
131 }
132 }
133
135
136 return sample;
137}
std::vector< std::shared_ptr< Node > > m_Nodes
Collection of nodes registered with this root node.
bool preprocess()
Checks if the root node can process pending operations.
void postprocess()
Performs post-processing after all nodes have been processed.
void atomic_add_flag(std::atomic< Utils::NodeState > &state, Utils::NodeState flag)
Atomically adds a flag to a node state.
@ PROCESSED
Node has been processed this cycle.
References MayaFlux::Nodes::atomic_add_flag(), m_Nodes, postprocess(), preprocess(), and MayaFlux::Utils::PROCESSED.
Referenced by process_batch().