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

◆ set_operator()

void MayaFlux::Nodes::Network::ParticleNetwork::set_operator ( std::unique_ptr< NetworkOperator op)

Set active operator (runtime switching)

Definition at line 180 of file ParticleNetwork.cpp.

181{
182 if (!op) {
184 "Cannot set null operator");
185 return;
186 }
187
188 const char* old_name = m_operator ? m_operator->get_type_name().data() : "none";
189 const char* new_name = op->get_type_name().data();
190
192 "Switching operator: '{}' → '{}'",
193 old_name, new_name);
194
195 std::vector<PointVertex> vertices;
196
197 if (auto* old_graphics = dynamic_cast<PhysicsOperator*>(m_operator.get())) {
198 vertices = old_graphics->extract_vertices();
199
201 "Extracted {} vertices from old operator",
202 vertices.size());
203 } else if (!m_operator) {
204 vertices = generate_initial_vertices();
205 }
206
207 if (auto* new_graphics = dynamic_cast<PhysicsOperator*>(op.get())) {
208 new_graphics->initialize(vertices);
209
210 if (auto* physics = dynamic_cast<PhysicsOperator*>(op.get())) {
211 physics->set_bounds(m_bounds.min, m_bounds.max);
212 }
213
215 "Initialized new graphics operator with {} points",
216 vertices.size());
217 }
218
219 m_operator = std::move(op);
220
221 if (auto* physics = dynamic_cast<PhysicsOperator*>(m_operator.get())) {
222 bool should_interact = (get_topology() == Topology::SPATIAL);
223 physics->enable_spatial_interactions(should_interact);
224 }
225
227 "Operator switched successfully to '{}'", new_name);
228}
#define MF_INFO(comp, ctx,...)
#define MF_ERROR(comp, ctx,...)
#define MF_DEBUG(comp, ctx,...)
Topology get_topology() const
Get the current topology.
std::vector< PointVertex > generate_initial_vertices()
std::unique_ptr< NetworkOperator > m_operator
@ NodeProcessing
Node graph processing (Nodes::NodeGraphManager)
@ Nodes
DSP Generator and Filter Nodes, graph pipeline, node management.
@ SPATIAL
Dynamic proximity-based (nodes within radius interact)

References generate_initial_vertices(), MayaFlux::Nodes::Network::NodeNetwork::get_topology(), m_bounds, m_operator, MayaFlux::Kinesis::SamplerBounds::max, MF_DEBUG, MF_ERROR, MF_INFO, MayaFlux::Kinesis::SamplerBounds::min, MayaFlux::Journal::NodeProcessing, MayaFlux::Journal::Nodes, and MayaFlux::Nodes::Network::SPATIAL.

+ Here is the call graph for this function: