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 115 of file PhysicsOperator.cpp.

116{
117 auto param_enum = string_to_parameter(param);
118
119 if (!param_enum) {
120 try {
121 Reflect::string_to_enum_or_throw_case_insensitive<PhysicsParameter>(
122 param, "PhysicsOperator parameter");
123 } catch (const std::invalid_argument& e) {
125 "{}", e.what());
126 }
128 "Unknown physics parameter: '{}'", param);
129 return;
130 }
131
132 switch (*param_enum) {
134 m_gravity.x = static_cast<float>(value);
135 break;
137 m_gravity.y = static_cast<float>(value);
138 break;
140 m_gravity.z = static_cast<float>(value);
141 break;
143 m_drag = glm::clamp(static_cast<float>(value), 0.0F, 1.0F);
144 break;
146 m_interaction_radius = static_cast<float>(value);
147 break;
149 m_spring_stiffness = static_cast<float>(value);
150 break;
152 m_repulsion_strength = static_cast<float>(value);
153 break;
155 m_spatial_interactions_enabled = (value > 0.5);
156 break;
158 m_point_size = static_cast<float>(value);
159 for (auto& group : m_collections) {
160 auto& points = group.collection->get_points();
161 for (auto& pt : points) {
162 pt.size = m_point_size;
163 }
164 }
165 break;
167 m_attraction_strength = static_cast<float>(value);
168 break;
170 m_turbulence_strength = static_cast<float>(value);
171 break;
172 }
173}
#define MF_ERROR(comp, ctx,...)
#define MF_WARN(comp, ctx,...)
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, 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: