diff options
Diffstat (limited to 'source/blender/editors/curve')
-rw-r--r-- | source/blender/editors/curve/curve_intern.h | 5 | ||||
-rw-r--r-- | source/blender/editors/curve/editcurve.c | 21 | ||||
-rw-r--r-- | source/blender/editors/curve/editcurve_add.c | 12 | ||||
-rw-r--r-- | source/blender/editors/curve/editcurve_paint.c | 2 |
4 files changed, 19 insertions, 21 deletions
diff --git a/source/blender/editors/curve/curve_intern.h b/source/blender/editors/curve/curve_intern.h index 704e4b740de..8ecf41162e9 100644 --- a/source/blender/editors/curve/curve_intern.h +++ b/source/blender/editors/curve/curve_intern.h @@ -142,7 +142,10 @@ struct GHash *ED_curve_keyindex_hash_duplicate(struct GHash *keyindex); void ED_curve_keyindex_update_nurb(struct EditNurb *editnurb, struct Nurb *nu, struct Nurb *newnu); /* helper functions */ -void ed_editnurb_translate_flag(struct ListBase *editnurb, uint8_t flag, const float vec[3]); +void ed_editnurb_translate_flag(struct ListBase *editnurb, + uint8_t flag, + const float vec[3], + bool is_2d); bool ed_editnurb_extrude_flag(struct EditNurb *editnurb, const uint8_t flag); bool ed_editnurb_spin(float viewmat[4][4], struct View3D *v3d, diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index 4816a432376..767d822aa39 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -1314,7 +1314,6 @@ void ED_curve_editnurb_make(Object *obedit) LISTBASE_FOREACH (Nurb *, nu, &cu->nurb) { Nurb *newnu = BKE_nurb_duplicate(nu); - BKE_nurb_test_2d(newnu); /* after join, or any other creation of curve */ BLI_addtail(&editnurb->nurbs, newnu); } @@ -1706,7 +1705,7 @@ static void rotateflagNurb(ListBase *editnurb, } } -void ed_editnurb_translate_flag(ListBase *editnurb, uint8_t flag, const float vec[3]) +void ed_editnurb_translate_flag(ListBase *editnurb, uint8_t flag, const float vec[3], bool is_2d) { /* all verts with ('flag' & flag) translate */ BezTriple *bezt; @@ -1741,7 +1740,9 @@ void ed_editnurb_translate_flag(ListBase *editnurb, uint8_t flag, const float ve } } - BKE_nurb_test_2d(nu); + if (is_2d) { + BKE_nurb_project_2d(nu); + } } } @@ -5401,7 +5402,7 @@ static int ed_editcurve_addvert(Curve *cu, mul_v3_fl(center, 1.0f / (float)verts_len); sub_v3_v3v3(ofs, location_init, center); - if ((cu->flag & CU_3D) == 0) { + if (CU_IS_2D(cu)) { ofs[2] = 0.0f; } @@ -5439,7 +5440,7 @@ static int ed_editcurve_addvert(Curve *cu, copy_v3_v3(location, location_init); - if ((cu->flag & CU_3D) == 0) { + if (CU_IS_2D(cu)) { location[2] = 0.0f; } @@ -5455,10 +5456,6 @@ static int ed_editcurve_addvert(Curve *cu, 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; - } } else { /* Copy the active nurb settings. */ @@ -5590,7 +5587,7 @@ static int add_vertex_invoke(bContext *C, wmOperator *op, const wmEvent *event) ED_transform_snap_object_context_destroy(snap_context); } - if ((cu->flag & CU_3D) == 0) { + if (CU_IS_2D(cu)) { const float eps = 1e-6f; /* get the view vector to 'location' */ @@ -6922,9 +6919,9 @@ int ED_curve_join_objects_exec(bContext *C, wmOperator *op) cu = ob_active->data; BLI_movelisttolist(&cu->nurb, &tempbase); - if (ob_active->type == OB_CURVE) { + if (ob_active->type == OB_CURVE && CU_IS_2D(cu)) { /* Account for mixed 2D/3D curves when joining */ - BKE_curve_curve_dimension_update(cu); + BKE_curve_dimension_update(cu); } DEG_relations_tag_update(bmain); /* because we removed object(s), call before editmode! */ diff --git a/source/blender/editors/curve/editcurve_add.c b/source/blender/editors/curve/editcurve_add.c index 5b66d473466..065763764c1 100644 --- a/source/blender/editors/curve/editcurve_add.c +++ b/source/blender/editors/curve/editcurve_add.c @@ -380,10 +380,10 @@ Nurb *ED_curve_add_nurbs_primitive( mul_mat3_m4_v3(mat, vec); - ed_editnurb_translate_flag(editnurb, SELECT, vec); + ed_editnurb_translate_flag(editnurb, SELECT, vec, CU_IS_2D(cu)); ed_editnurb_extrude_flag(cu->editnurb, SELECT); mul_v3_fl(vec, -2.0f); - ed_editnurb_translate_flag(editnurb, SELECT, vec); + ed_editnurb_translate_flag(editnurb, SELECT, vec, CU_IS_2D(cu)); BLI_remlink(editnurb, nu); @@ -492,15 +492,13 @@ Nurb *ED_curve_add_nurbs_primitive( BLI_assert(nu != NULL); if (nu) { /* should always be set */ - if ((obedit->type != OB_SURF) && ((cu->flag & CU_3D) == 0)) { - nu->flag |= CU_2D; - } - nu->flag |= CU_SMOOTH; cu->actnu = BLI_listbase_count(editnurb); cu->actvert = CU_ACT_NONE; - BKE_nurb_test_2d(nu); + if (CU_IS_2D(cu)) { + BKE_nurb_project_2d(nu); + } } return nu; diff --git a/source/blender/editors/curve/editcurve_paint.c b/source/blender/editors/curve/editcurve_paint.c index 0d071f2e595..6342076df34 100644 --- a/source/blender/editors/curve/editcurve_paint.c +++ b/source/blender/editors/curve/editcurve_paint.c @@ -1072,7 +1072,7 @@ static int curve_draw_invoke(bContext *C, wmOperator *op, const wmEvent *event) const float *plane_no = NULL; const float *plane_co = NULL; - if ((cu->flag & CU_3D) == 0) { + if (CU_IS_2D(cu)) { /* 2D overrides other options */ plane_co = obedit->obmat[3]; plane_no = obedit->obmat[2]; |