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

◆ set_parameter()

void MayaFlux::Nodes::Network::PhysicsOperator::set_parameter ( std::string_view  param,
double  value 
)
overridevirtual

Set operator parameter.

Implements MayaFlux::Nodes::Network::NetworkOperator.

Definition at line 158 of file PhysicsOperator.cpp.

159{
160 auto param_enum = string_to_parameter(param);
161
162 if (!param_enum) {
163 try {
164 Reflect::string_to_enum_or_throw_case_insensitive<PhysicsParameter>(
165 param, "PhysicsOperator parameter");
166 } catch (const std::invalid_argument& e) {
168 "{}", e.what());
169 }
171 "Unknown physics parameter: '{}'", param);
172 return;
173 }
174
175 switch (*param_enum) {
177 m_gravity.x = static_cast<float>(value);
178 break;
180 m_gravity.y = static_cast<float>(value);
181 break;
183 m_gravity.z = static_cast<float>(value);
184 break;
186 m_drag = glm::clamp(static_cast<float>(value), 0.0F, 1.0F);
187 break;
189 m_interaction_radius = static_cast<float>(value);
190 break;
192 m_spring_stiffness = static_cast<float>(value);
193 break;
195 m_repulsion_strength = static_cast<float>(value);
196 break;
198 m_spatial_interactions_enabled = (value > 0.5);
199 break;
201 m_point_size = static_cast<float>(value);
202 for (auto& group : m_collections) {
203 auto& points = group.collection->get_points();
204 for (auto& pt : points) {
205 pt.size = m_point_size;
206 }
207 }
208 break;
210 m_attraction_strength = static_cast<float>(value);
211 break;
213 m_turbulence_strength = static_cast<float>(value);
214 break;
215 }
216}
#define MF_ERROR(comp, ctx,...)
#define MF_WARN(comp, ctx,...)
std::vector< glm::vec2 > * points
std::vector< CollectionGroup > m_collections
static std::optional< PhysicsParameter > string_to_parameter(std::string_view param)
@ NodeProcessing
Node graph processing (Nodes::NodeGraphManager)
@ Nodes
DSP Generator and Filter Nodes, graph pipeline, node management.

References MayaFlux::Nodes::Network::ATTRACTION_STRENGTH, MayaFlux::Nodes::Network::DRAG, MayaFlux::Nodes::Network::GRAVITY_X, MayaFlux::Nodes::Network::GRAVITY_Y, MayaFlux::Nodes::Network::GRAVITY_Z, MayaFlux::Nodes::Network::INTERACTION_RADIUS, m_attraction_strength, m_collections, m_drag, m_gravity, m_interaction_radius, m_point_size, m_repulsion_strength, m_spatial_interactions_enabled, m_spring_stiffness, m_turbulence_strength, MF_ERROR, MF_WARN, MayaFlux::Journal::NodeProcessing, MayaFlux::Journal::Nodes, MayaFlux::Nodes::Network::POINT_SIZE, points, MayaFlux::Nodes::Network::REPULSION_STRENGTH, MayaFlux::Nodes::Network::SPATIAL_INTERACTIONS, MayaFlux::Nodes::Network::SPRING_STIFFNESS, string_to_parameter(), and MayaFlux::Nodes::Network::TURBULENCE.

+ Here is the call graph for this function: