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

◆ apply_broadcast_parameter()

void MayaFlux::Nodes::Network::ParticleNetwork::apply_broadcast_parameter ( const std::string &  param,
double  value 
)
private

Apply broadcast parameter to all particles.

Definition at line 186 of file ParticleNetwork.cpp.

187{
188 if (param == "gravity") {
189 m_gravity.y = static_cast<float>(value);
190 } else if (param == "drag") {
191 m_drag = glm::clamp(static_cast<float>(value), 0.0F, 1.0F);
192 } else if (param == "turbulence") {
193 for (auto& particle : m_particles) {
194 glm::vec3 random_force(
195 (static_cast<float>(rand()) / RAND_MAX - 0.5F) * 2.0F,
196 (static_cast<float>(rand()) / RAND_MAX - 0.5F) * 2.0F,
197 (static_cast<float>(rand()) / RAND_MAX - 0.5F) * 2.0F);
198 particle.force += random_force * static_cast<float>(value);
199 }
200 } else if (param == "attraction") {
201 m_attraction_strength = static_cast<float>(value);
202 } else if (param == "spring_stiffness") {
203 m_spring_stiffness = glm::max(0.0F, static_cast<float>(value));
204 } else if (param == "repulsion_strength") {
205 m_repulsion_strength = glm::max(0.0F, static_cast<float>(value));
206 } else if (param == "force_x") {
207 for (auto& particle : m_particles) {
208 particle.force.x += static_cast<float>(value);
209 }
210 } else if (param == "force_y") {
211 for (auto& particle : m_particles) {
212 particle.force.y += static_cast<float>(value);
213 }
214 } else if (param == "force_z") {
215 for (auto& particle : m_particles) {
216 particle.force.z += static_cast<float>(value);
217 }
218 }
219}

References m_attraction_strength, m_drag, m_gravity, m_particles, m_repulsion_strength, and m_spring_stiffness.

Referenced by update_mapped_parameters().

+ Here is the caller graph for this function: