[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