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

◆ apply_one_to_one_parameter()

void MayaFlux::Nodes::Network::ParticleNetwork::apply_one_to_one_parameter ( const std::string &  param,
const std::shared_ptr< NodeNetwork > &  source 
)
private

Apply one-to-one parameter from another network.

Definition at line 221 of file ParticleNetwork.cpp.

224{
225 if (source->get_node_count() != m_particles.size()) {
227 "Parameter mapping size mismatch: {} particles vs {} source nodes",
228 m_particles.size(), source->get_node_count());
229 return;
230 }
231
232 if (param == "force_x") {
233 for (size_t i = 0; i < m_particles.size(); ++i) {
234 auto val = source->get_node_output(i);
235 if (val) {
236 m_particles[i].force.x += static_cast<float>(*val);
237 }
238 }
239 } else if (param == "force_y") {
240 for (size_t i = 0; i < m_particles.size(); ++i) {
241 auto val = source->get_node_output(i);
242 if (val) {
243 m_particles[i].force.y += static_cast<float>(*val);
244 }
245 }
246 } else if (param == "force_z") {
247 for (size_t i = 0; i < m_particles.size(); ++i) {
248 auto val = source->get_node_output(i);
249 if (val) {
250 m_particles[i].force.z += static_cast<float>(*val);
251 }
252 }
253 } else if (param == "color") {
254 for (size_t i = 0; i < m_particles.size(); ++i) {
255 auto val = source->get_node_output(i);
256 if (val) {
257 float normalized = glm::clamp(static_cast<float>(*val), 0.0F, 1.0F);
258 glm::vec3 color(normalized, 0.5F, 1.0F - normalized);
259 m_particles[i].point->set_color(color);
260 }
261 }
262 } else if (param == "size") {
263 for (size_t i = 0; i < m_particles.size(); ++i) {
264 auto val = source->get_node_output(i);
265 if (val) {
266 float size = glm::clamp(static_cast<float>(*val) * 10.0F, 1.0F, 50.0F);
267 m_particles[i].point->set_size(size);
268 }
269 }
270 } else if (param == "mass") {
271 for (size_t i = 0; i < m_particles.size(); ++i) {
272 auto val = source->get_node_output(i);
273 if (val) {
274 m_particles[i].mass = std::max(0.1F, static_cast<float>(*val));
275 }
276 }
277 }
278}
#define MF_WARN(comp, ctx,...)
@ NodeProcessing
Node graph processing (Nodes::NodeGraphManager)
@ Nodes
DSP Generator and Filter Nodes, graph pipeline, node management.
std::vector< double > normalized(const std::vector< double > &data, double target_peak)
Normalize single-channel data (non-destructive)
Definition Yantra.cpp:593

References m_particles, MF_WARN, MayaFlux::Journal::NodeProcessing, MayaFlux::Journal::Nodes, and MayaFlux::normalized().

Referenced by update_mapped_parameters().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: