Fix curve adding 3D nurbs when 2D is set

Ctrl-LMB ignored 2D constraint
This commit is contained in:
Campbell Barton 2016-04-04 17:47:55 +10:00 committed by Sergey Sharybin
parent e63a8e7ded
commit a5cfe0f9dc
1 changed files with 18 additions and 2 deletions

View File

@ -4767,7 +4767,7 @@ static bool ed_editcurve_extrude(Curve *cu, EditNurb *editnurb)
/***************** add vertex operator **********************/
static int ed_editcurve_addvert(Curve *cu, EditNurb *editnurb, const float location[3])
static int ed_editcurve_addvert(Curve *cu, EditNurb *editnurb, const float location_init[3])
{
Nurb *nu;
@ -4808,7 +4808,7 @@ static int ed_editcurve_addvert(Curve *cu, EditNurb *editnurb, const float locat
int i;
mid_v3_v3v3(center, minmax[0], minmax[1]);
sub_v3_v3v3(ofs, location, center);
sub_v3_v3v3(ofs, location_init, center);
if ((cu->flag & CU_3D) == 0) {
ofs[2] = 0.0f;
@ -4846,6 +4846,14 @@ static int ed_editcurve_addvert(Curve *cu, EditNurb *editnurb, const float locat
changed = true;
}
else {
float location[3];
copy_v3_v3(location, location_init);
if ((cu->flag & CU_3D) == 0) {
location[2] = 0.0f;
}
/* nothing selected: create a new curve */
nu = BKE_curve_nurb_active_get(cu);
@ -4863,6 +4871,10 @@ static int ed_editcurve_addvert(Curve *cu, EditNurb *editnurb, const float locat
nurb_new->orderu = 4;
nurb_new->flag |= CU_SMOOTH;
BKE_nurb_bezierPoints_add(nurb_new, 1);
if ((cu->flag & CU_3D) == 0) {
nurb_new->flag |= CU_2D;
}
}
BLI_addtail(&editnurb->nurbs, nurb_new);
@ -4894,6 +4906,10 @@ static int ed_editcurve_addvert(Curve *cu, EditNurb *editnurb, const float locat
nurb_new->flag |= CU_SMOOTH;
nurb_new->orderu = 4;
BKE_nurb_points_add(nurb_new, 1);
if ((cu->flag & CU_3D) == 0) {
nurb_new->flag |= CU_2D;
}
}
BLI_addtail(&editnurb->nurbs, nurb_new);