Commit: 0a7ed17099c6249b8f6d90e210fd75270e25ad15
Author: Campbell Barton
Date:   Mon Apr 4 17:47:55 2016 +1000
Branches: master
https://developer.blender.org/rB0a7ed17099c6249b8f6d90e210fd75270e25ad15

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 1b588e3..77fc7a8 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);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to