Commit: 060c5a7fa2c10f8adcaadf30cf961103d31de113
Author: Hans Goudey
Date:   Thu May 5 11:30:16 2022 +0200
Branches: master
https://developer.blender.org/rB060c5a7fa2c10f8adcaadf30cf961103d31de113

Cleanup: Remove unnecessary logic for resample curves node

After 2d80f814cc24, we can assume that curves always have at least one
evalauted point, so this complication isn't necessary anymore.

===================================================================

M       source/blender/nodes/geometry/nodes/node_geo_curve_resample.cc

===================================================================

diff --git a/source/blender/nodes/geometry/nodes/node_geo_curve_resample.cc 
b/source/blender/nodes/geometry/nodes/node_geo_curve_resample.cc
index e0348f27e51..2e5a94b0a63 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_curve_resample.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_curve_resample.cc
@@ -56,43 +56,6 @@ static void node_update(bNodeTree *ntree, bNode *node)
   nodeSetSocketAvailability(ntree, length_socket, mode == 
GEO_NODE_CURVE_RESAMPLE_LENGTH);
 }
 
-/** Returns the number of evaluated points in each curve. Used to deselect 
curves with none. */
-class EvaluatedCountFieldInput final : public GeometryFieldInput {
- public:
-  EvaluatedCountFieldInput() : GeometryFieldInput(CPPType::get<int>(), 
"Evaluated Point Count")
-  {
-    category_ = Category::Generated;
-  }
-
-  GVArray get_varray_for_context(const GeometryComponent &component,
-                                 const AttributeDomain domain,
-                                 IndexMask UNUSED(mask)) const final
-  {
-    if (component.type() == GEO_COMPONENT_TYPE_CURVE && domain == 
ATTR_DOMAIN_CURVE &&
-        !component.is_empty()) {
-      const CurveComponent &curve_component = static_cast<const CurveComponent 
&>(component);
-      const Curves &curves_id = *curve_component.get_for_read();
-      const bke::CurvesGeometry &curves = 
bke::CurvesGeometry::wrap(curves_id.geometry);
-      curves.ensure_evaluated_offsets();
-      return VArray<int>::ForFunc(curves.curves_num(), [&](const int64_t 
index) -> int {
-        return curves.evaluated_points_for_curve(index).size();
-      });
-    }
-    return {};
-  }
-
-  uint64_t hash() const override
-  {
-    /* Some random constant hash. */
-    return 234905872379865;
-  }
-
-  bool is_equal_to(const fn::FieldNode &other) const override
-  {
-    return dynamic_cast<const EvaluatedCountFieldInput *>(&other) != nullptr;
-  }
-};
-
 /**
  * Return true if the attribute should be copied/interpolated to the result 
curves.
  * Don't output attributes that correspond to curve types that have no curves 
in the result.
@@ -435,8 +398,6 @@ static Curves *resample_to_uniform_count(const 
CurveComponent &src_component,
 
 /**
  * Evaluate each selected curve to its implicit evaluated points.
- *
- * \warning Curves with no evaluated points must not be selected.
  */
 static Curves *resample_to_evaluated(const CurveComponent &src_component,
                                      const Field<bool> &selection_field)
@@ -584,28 +545,6 @@ static Field<int> get_curve_count_field(GeoNodeExecParams 
params,
   return {};
 }
 
-/**
- * Create a selection field that removes curves without any evaluated points 
(invalid NURBS curves)
- * from the original selection provided to the node. This is here to simplify 
the sampling actual
- * resampling code.
- */
-static Field<bool> get_selection_field(GeoNodeExecParams params)
-{
-  static fn::CustomMF_SI_SI_SO<bool, int, bool> get_selection_fn(
-      "Create Curve Selection",
-      [](const bool orig_selection, const int evaluated_points_num) {
-        return orig_selection && evaluated_points_num > 1;
-      },
-      fn::CustomMF_presets::AllSpanOrSingle());
-
-  auto selection_op = std::make_shared<FieldOperation>(
-      FieldOperation(get_selection_fn,
-                     {params.extract_input<Field<bool>>("Selection"),
-                      
Field<int>(std::make_shared<EvaluatedCountFieldInput>())}));
-
-  return Field<bool>(std::move(selection_op));
-}
-
 static void node_geo_exec(GeoNodeExecParams params)
 {
   GeometrySet geometry_set = params.extract_input<GeometrySet>("Curve");
@@ -613,7 +552,7 @@ static void node_geo_exec(GeoNodeExecParams params)
   const NodeGeometryCurveResample &storage = node_storage(params.node());
   const GeometryNodeCurveResampleMode mode = 
(GeometryNodeCurveResampleMode)storage.mode;
 
-  const Field<bool> selection = get_selection_field(params);
+  const Field<bool> selection = params.extract_input<Field<bool>>("Selection");
 
   switch (mode) {
     case GEO_NODE_CURVE_RESAMPLE_COUNT:

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to