[Bf-blender-cvs] [22a9613] master: Fix T40546: Duplicate spline breaks shape keys

Campbell Barton noreply at git.blender.org
Thu Jun 19 05:54:15 CEST 2014


Commit: 22a961317a1c0405f41966205e22f70fb3769799
Author: Campbell Barton
Date:   Thu Jun 19 13:53:26 2014 +1000
https://developer.blender.org/rB22a961317a1c0405f41966205e22f70fb3769799

Fix T40546: Duplicate spline breaks shape keys

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

M	source/blender/editors/mask/mask_ops.c

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

diff --git a/source/blender/editors/mask/mask_ops.c b/source/blender/editors/mask/mask_ops.c
index 5e84d9e..a882284 100644
--- a/source/blender/editors/mask/mask_ops.c
+++ b/source/blender/editors/mask/mask_ops.c
@@ -2077,6 +2077,8 @@ static int mask_duplicate_exec(bContext *C, wmOperator *UNUSED(op))
 					point++;
 				}
 				if (end >= start) {
+					int tot_point;
+					int tot_point_shape_start;
 					MaskSpline *new_spline = BKE_mask_spline_add(mask_layer);
 					MaskSplinePoint *new_point;
 					int b;
@@ -2100,15 +2102,29 @@ static int mask_duplicate_exec(bContext *C, wmOperator *UNUSED(op))
 					memcpy(new_spline->points, spline->points + start,
 					       new_spline->tot_point * sizeof(MaskSplinePoint));
 
+					tot_point = new_spline->tot_point;
+
+					/* animation requires points added one by one */
+					if (mask_layer->splines_shapes.first) {
+						new_spline->tot_point = 0;
+						tot_point_shape_start = BKE_mask_layer_shape_spline_to_index(mask_layer, new_spline);
+					}
+
 					/* Select points and duplicate their UWs (if needed). */
 					for (b = 0, new_point = new_spline->points;
-					     b < new_spline->tot_point;
+					     b < tot_point;
 					     b++, new_point++)
 					{
 						if (new_point->uw) {
 							new_point->uw = MEM_dupallocN(new_point->uw);
 						}
 						BKE_mask_point_select_set(new_point, true);
+
+
+						if (mask_layer->splines_shapes.first) {
+							new_spline->tot_point++;
+							BKE_mask_layer_shape_changed_add(mask_layer, tot_point_shape_start + b, true, false);
+						}
 					}
 
 					/* Clear cyclic flag if we didn't copy the whole spline. */




More information about the Bf-blender-cvs mailing list