diff options
author | Campbell Barton <ideasman42@gmail.com> | 2016-04-04 10:47:55 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2016-04-04 11:36:37 +0300 |
commit | 0a7ed17099c6249b8f6d90e210fd75270e25ad15 (patch) | |
tree | 2b8da39038f84e85e5410a89dd7cab883701ec72 /source/blender/editors | |
parent | 097b895c2cccf5890e4ae97bcddf6d33530ef84b (diff) |
Fix curve adding 3D nurbs when 2D is set
Ctrl-LMB ignored 2D constraint
Diffstat (limited to 'source/blender/editors')
-rw-r--r-- | source/blender/editors/curve/editcurve.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index 1b588e3baed..77fc7a83256 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -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); |