[Bf-blender-cvs] [d55046b1670] temp-geometry-nodes-fields-prototype: Support field for curve set spline type selection
Hans Goudey
noreply at git.blender.org
Fri Aug 6 00:50:43 CEST 2021
Commit: d55046b1670c7036b594b7c757d7b32051099698
Author: Hans Goudey
Date: Thu Aug 5 17:50:23 2021 -0500
Branches: temp-geometry-nodes-fields-prototype
https://developer.blender.org/rBd55046b1670c7036b594b7c757d7b32051099698
Support field for curve set spline type selection
===================================================================
M source/blender/nodes/geometry/nodes/node_geo_curve_spline_type.cc
===================================================================
diff --git a/source/blender/nodes/geometry/nodes/node_geo_curve_spline_type.cc b/source/blender/nodes/geometry/nodes/node_geo_curve_spline_type.cc
index fe3f42625ae..7d432f5bb24 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_curve_spline_type.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_curve_spline_type.cc
@@ -25,7 +25,7 @@
static bNodeSocketTemplate geo_node_curve_spline_type_in[] = {
{SOCK_GEOMETRY, N_("Curve")},
- {SOCK_STRING, N_("Selection")},
+ {SOCK_BOOLEAN, N_("Selection"), 1, 0, 0, 0, 0, 0, PROP_NONE, SOCK_HIDE_VALUE},
{-1, ""},
};
@@ -255,12 +255,17 @@ static void geo_node_curve_spline_type_exec(GeoNodeExecParams params)
return;
}
- const CurveComponent *curve_component = geometry_set.get_component_for_read<CurveComponent>();
- const CurveEval &curve = *curve_component->get_for_read();
+ const CurveComponent &curve_component = *geometry_set.get_component_for_read<CurveComponent>();
+ const CurveEval &curve = *curve_component.get_for_read();
- const std::string selection_name = params.extract_input<std::string>("Selection");
- GVArray_Typed<bool> selection = curve_component->attribute_get_for_read(
- selection_name, ATTR_DOMAIN_CURVE, true);
+ bke::FieldRef<bool> field = params.get_input_field<bool>("Selection");
+ bke::FieldInputs field_inputs = field->prepare_inputs();
+ Vector<std::unique_ptr<bke::FieldInputValue>> field_input_values;
+ prepare_field_inputs(field_inputs, curve_component, ATTR_DOMAIN_CURVE, field_input_values);
+ bke::FieldOutput field_output = field->evaluate(
+ IndexRange(curve_component.attribute_domain_size(ATTR_DOMAIN_CURVE)), field_inputs);
+
+ GVArray_Typed<bool> selection{field_output.varray_ref()};
std::unique_ptr<CurveEval> new_curve = std::make_unique<CurveEval>();
for (const int i : curve.splines().index_range()) {
More information about the Bf-blender-cvs
mailing list