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
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2016-04-04 10:47:55 +0300
committerCampbell Barton <ideasman42@gmail.com>2016-04-04 11:36:37 +0300
commit0a7ed17099c6249b8f6d90e210fd75270e25ad15 (patch)
tree2b8da39038f84e85e5410a89dd7cab883701ec72 /source/blender/editors
parent097b895c2cccf5890e4ae97bcddf6d33530ef84b (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.c20
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);