[Bf-blender-cvs] [400ea40dca7] master: Curves: Port curves total length node to the new data-block

Hans Goudey noreply at git.blender.org
Wed Mar 30 03:24:55 CEST 2022


Commit: 400ea40dca7a9be5fd2c1974c1c542d896621d67
Author: Hans Goudey
Date:   Tue Mar 29 20:24:41 2022 -0500
Branches: master
https://developer.blender.org/rB400ea40dca7a9be5fd2c1974c1c542d896621d67

Curves: Port curves total length node to the new data-block

Ref T95443

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

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

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

diff --git a/source/blender/nodes/geometry/nodes/node_geo_curve_length.cc b/source/blender/nodes/geometry/nodes/node_geo_curve_length.cc
index d5769c691c8..11eb472a6e2 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_curve_length.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_curve_length.cc
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-or-later */
 
-#include "BKE_spline.hh"
+#include "BKE_curves.hh"
+
 #include "node_geometry_util.hh"
 
 namespace blender::nodes::node_geo_curve_length_cc {
@@ -18,11 +19,18 @@ static void node_geo_exec(GeoNodeExecParams params)
     params.set_default_remaining_outputs();
     return;
   }
-  const std::unique_ptr<CurveEval> curve = curves_to_curve_eval(*curve_set.get_curves_for_read());
+
+  const Curves &curves_id = *curve_set.get_curves_for_read();
+  const bke::CurvesGeometry &curves = bke::CurvesGeometry::wrap(curves_id.geometry);
+  const VArray<bool> cyclic = curves.cyclic();
+
+  curves.ensure_evaluated_lengths();
+
   float length = 0.0f;
-  for (const SplinePtr &spline : curve->splines()) {
-    length += spline->length();
+  for (const int i : curves.curves_range()) {
+    length += curves.evaluated_length_total_for_curve(i, cyclic[i]);
   }
+
   params.set_output("Length", length);
 }



More information about the Bf-blender-cvs mailing list