[Bf-blender-cvs] [27e6962beda] blender-v3.3-release: Fix T100086: GPencil Bezier curve edit not updated after smoothing

Antonio Vazquez noreply at git.blender.org
Sun Jul 31 13:19:17 CEST 2022


Commit: 27e6962beda6df155599cbbd1682c20f4e1cd06d
Author: Antonio Vazquez
Date:   Sun Jul 31 13:19:09 2022 +0200
Branches: blender-v3.3-release
https://developer.blender.org/rB27e6962beda6df155599cbbd1682c20f4e1cd06d

Fix T100086: GPencil Bezier curve edit not updated after smoothing

The stroke was recalculated, but the curve data was not updated.

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

M	source/blender/editors/gpencil/gpencil_edit.c

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

diff --git a/source/blender/editors/gpencil/gpencil_edit.c b/source/blender/editors/gpencil/gpencil_edit.c
index 71cf9b1fafd..69a74c36aee 100644
--- a/source/blender/editors/gpencil/gpencil_edit.c
+++ b/source/blender/editors/gpencil/gpencil_edit.c
@@ -3989,6 +3989,7 @@ static void gpencil_smooth_stroke(bContext *C, wmOperator *op)
       /* TODO use `BKE_gpencil_stroke_smooth` when the weights are better used. */
       bGPDstroke gps_old = *gps;
       gps_old.points = (bGPDspoint *)MEM_dupallocN(gps->points);
+      bool need_update = false;
       /* Here the iteration needs to be done outside the smooth functions,
        * as there are points that don't get smoothed. */
       for (int n = 0; n < repeat; n++) {
@@ -4000,6 +4001,7 @@ static void gpencil_smooth_stroke(bContext *C, wmOperator *op)
           /* Perform smoothing. */
           if (smooth_position) {
             BKE_gpencil_stroke_smooth_point(&gps_old, i, factor, 1, false, false, gps);
+            need_update = true;
           }
           if (smooth_strength) {
             BKE_gpencil_stroke_smooth_strength(&gps_old, i, factor, 1, gps);
@@ -4009,6 +4011,7 @@ static void gpencil_smooth_stroke(bContext *C, wmOperator *op)
           }
           if (smooth_uv) {
             BKE_gpencil_stroke_smooth_uv(&gps_old, i, factor, 1, gps);
+            need_update = true;
           }
         }
         if (n < repeat - 1) {
@@ -4016,6 +4019,11 @@ static void gpencil_smooth_stroke(bContext *C, wmOperator *op)
         }
       }
       MEM_freeN(gps_old.points);
+
+      if (need_update) {
+        gps->flag |= GP_STROKE_NEEDS_CURVE_UPDATE;
+        BKE_gpencil_stroke_geometry_update(gpd_, gps);
+      }
     }
   }
   GP_EDITABLE_STROKES_END(gpstroke_iter);



More information about the Bf-blender-cvs mailing list