From 524d172742ec22ca04f2b0c83932e2cda669837c Mon Sep 17 00:00:00 2001 From: Hans Goudey Date: Thu, 22 Jul 2021 17:11:26 -0400 Subject: Fix: "Bake" automatically calculated handles in set handle node Because these handles are calculated lazily, we need to make sure they are calculated before switching to a manually positioned mode. I doubt it would ever be necessary, but theoretically this could happen on a per-point level, to avoid calculating handles not in the selection. --- source/blender/nodes/geometry/nodes/node_geo_curve_set_handles.cc | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'source/blender/nodes') diff --git a/source/blender/nodes/geometry/nodes/node_geo_curve_set_handles.cc b/source/blender/nodes/geometry/nodes/node_geo_curve_set_handles.cc index 96987df9de3..72bd8ab188d 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_curve_set_handles.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_curve_set_handles.cc @@ -101,6 +101,12 @@ static void geo_node_curve_set_handles_exec(GeoNodeExecParams params) } BezierSpline &bezier_spline = static_cast(*spline); + if (ELEM(new_handle_type, BezierSpline::HandleType::Free, BezierSpline::HandleType::Align)) { + /* In this case the automatically calculated handle types need to be "baked", because + * they're possibly changing from a type that is calculated automatically to a type that + * is positioned manually. */ + bezier_spline.ensure_auto_handles(); + } has_bezier_spline = true; for (int i_point : IndexRange(bezier_spline.size())) { if (selection[point_index]) { -- cgit v1.2.3