diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-04-29 17:04:31 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-04-29 17:56:15 +0400 |
commit | 6edcff4fd266c87f5c2b3d44d15db0faa443cfc4 (patch) | |
tree | bb79942009f04f39cec3a6fd37db787047c9da57 /source | |
parent | d36795a11e673074e6ca2ef67f5060b692939075 (diff) |
Fix for nurbs surface merge didn't update key index
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/curve/editcurve.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index 61a9a586531..2fdc9ff846b 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -4216,7 +4216,7 @@ static void make_selection_list_nurb(ListBase *editnurb) } } -static void merge_2_nurb(wmOperator *op, ListBase *editnurb, Nurb *nu1, Nurb *nu2) +static void merge_2_nurb(wmOperator *op, Curve *cu, ListBase *editnurb, Nurb *nu1, Nurb *nu2) { BPoint *bp, *bp1, *bp2, *temp; float len1, len2; @@ -4331,10 +4331,12 @@ static void merge_2_nurb(wmOperator *op, ListBase *editnurb, Nurb *nu1, Nurb *nu for (u = 0; u < nu1->pntsu; u++, bp++) { if (u < origu) { + keyIndex_updateBP(cu->editnurb, bp1, bp, 1); *bp = *bp1; bp1++; select_bpoint(bp, SELECT, SELECT, HIDDEN); } else { + keyIndex_updateBP(cu->editnurb, bp2, bp, 1); *bp = *bp2; bp2++; } } @@ -4356,6 +4358,7 @@ static void merge_2_nurb(wmOperator *op, ListBase *editnurb, Nurb *nu1, Nurb *nu static int merge_nurb(bContext *C, wmOperator *op) { Object *obedit = CTX_data_edit_object(C); + Curve *cu = obedit->data; ListBase *editnurb = object_editcurve_get(obedit); NurbSort *nus1, *nus2; bool ok = true; @@ -4405,7 +4408,7 @@ static int merge_nurb(bContext *C, wmOperator *op) } while (nus2) { - merge_2_nurb(op, editnurb, nus1->nu, nus2->nu); + merge_2_nurb(op, cu, editnurb, nus1->nu, nus2->nu); nus2 = nus2->next; } @@ -4552,6 +4555,7 @@ static int make_segment_exec(bContext *C, wmOperator *op) nu1->bezt = bezt; nu1->pntsu += nu2->pntsu; BLI_remlink(nubase, nu2); + keyIndex_delNurb(cu->editnurb, nu2); BKE_nurb_free(nu2); nu2 = NULL; BKE_nurb_handles_calc(nu1); } @@ -4576,6 +4580,7 @@ static int make_segment_exec(bContext *C, wmOperator *op) BKE_nurb_knot_calc_u(nu1); } + keyIndex_delNurb(cu->editnurb, nu2); BKE_nurb_free(nu2); nu2 = NULL; } |