[Bf-blender-cvs] [a5cfe0f] blender-v2.77-release: Fix curve adding 3D nurbs when 2D is set
Campbell Barton
noreply at git.blender.org
Tue Apr 5 10:39:13 CEST 2016
Commit: a5cfe0f9dcb213d2f81eaebaff37aec6b8fb0c42
Author: Campbell Barton
Date: Mon Apr 4 17:47:55 2016 +1000
Branches: blender-v2.77-release
https://developer.blender.org/rBa5cfe0f9dcb213d2f81eaebaff37aec6b8fb0c42
Fix curve adding 3D nurbs when 2D is set
Ctrl-LMB ignored 2D constraint
===================================================================
M source/blender/editors/curve/editcurve.c
===================================================================
diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c
index 55e571e..268804e 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);
More information about the Bf-blender-cvs
mailing list