Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2014-04-29 17:04:31 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2014-04-29 17:56:15 +0400
commit6edcff4fd266c87f5c2b3d44d15db0faa443cfc4 (patch)
treebb79942009f04f39cec3a6fd37db787047c9da57 /source
parentd36795a11e673074e6ca2ef67f5060b692939075 (diff)
Fix for nurbs surface merge didn't update key index
Diffstat (limited to 'source')
-rw-r--r--source/blender/editors/curve/editcurve.c9
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;
}