MayaFlux 1.0.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ process_slot()

void MayaFlux::Nodes::Network::MeshFieldOperator::process_slot ( MeshSlot &  slot,
float  dt 
)
overridevirtual

Run the slot's FieldOperator (if bound) and write results back to slot.node via set_mesh_vertices().

Implements MayaFlux::Nodes::Network::MeshOperator.

Definition at line 179 of file MeshFieldOperator.cpp.

180{
181 auto it = m_field_ops.find(slot.index);
182 if (it == m_field_ops.end())
183 return;
184
185 auto& field_op = it->second;
186
187 if (slot.node) {
188 const auto& current = slot.node->get_mesh_vertices();
189 if (current.empty())
190 return;
191
192 const auto held = field_op->get_vertex_data();
193 const size_t bytes = current.size() * sizeof(MeshVertex);
194 if (held.size() != bytes || std::memcmp(held.data(), current.data(), bytes) != 0) {
195 field_op->initialize(current);
197 "MeshFieldOperator: initialised slot {} from its node ({} vertices)",
198 slot.index, current.size());
199 }
200 }
201
202 field_op->process(dt);
203
204 if (field_op->is_vertex_data_dirty() && slot.node) {
205 slot.node->set_mesh_vertices(field_op->extract_mesh_vertices());
206 field_op->mark_vertex_data_clean();
207 }
208}
#define MF_DEBUG(comp, ctx,...)
glm::vec2 current
std::shared_ptr< Nodes::Network::GpuFieldOperator > field_op
std::unordered_map< uint32_t, std::shared_ptr< FieldOperator > > m_field_ops
@ NodeProcessing
Node graph processing (Nodes::NodeGraphManager)
@ Nodes
DSP Generator and Filter Nodes, graph pipeline, node management.
Kakshya::MeshVertex MeshVertex

References current, field_op, MayaFlux::Nodes::Network::MeshSlot::index, m_field_ops, MF_DEBUG, MayaFlux::Nodes::Network::MeshSlot::node, MayaFlux::Journal::NodeProcessing, and MayaFlux::Journal::Nodes.