[Bf-blender-cvs] [b6b0491a907] soc-2021-curves: Set active vert
Dilith Jayakody
noreply at git.blender.org
Sun Apr 3 17:34:20 CEST 2022
Commit: b6b0491a907dc291a677a00b7bd82872d0f5c588
Author: Dilith Jayakody
Date: Sat Mar 26 09:11:47 2022 +0530
Branches: soc-2021-curves
https://developer.blender.org/rBb6b0491a907dc291a677a00b7bd82872d0f5c588
Set active vert
===================================================================
M source/blender/editors/curve/editcurve_pen.c
===================================================================
diff --git a/source/blender/editors/curve/editcurve_pen.c b/source/blender/editors/curve/editcurve_pen.c
index c7b28bb54c2..6b28310064a 100644
--- a/source/blender/editors/curve/editcurve_pen.c
+++ b/source/blender/editors/curve/editcurve_pen.c
@@ -435,7 +435,7 @@ static void delete_nurb(Curve *cu, Nurb *nu)
ListBase *nurbs = &editnurb->nurbs;
const int nu_index = get_nurb_index(nurbs, nu);
if (cu->actnu == nu_index) {
- cu->actnu = CU_ACT_NONE;
+ BKE_curve_nurb_vert_active_set(cu, NULL, NULL);
}
BLI_remlink(nurbs, nu);
@@ -603,8 +603,7 @@ static void insert_bezt_to_nurb(Nurb *nu, const CutData *data, Curve *cu)
}
nu->pntsu += 1;
- cu->actvert = index;
- cu->actnu = get_nurb_index(BKE_curve_editNurbs_get(cu), nu);
+ BKE_curve_nurb_vert_active_set(cu, nu, nu->bezt + index);
BezTriple *next_bezt;
if (is_cyclic(nu) && (index == nu->pntsu - 1)) {
@@ -657,8 +656,7 @@ static void insert_bp_to_nurb(Nurb *nu, const CutData *data, Curve *cu)
}
nu->pntsu += 1;
- cu->actvert = index;
- cu->actnu = get_nurb_index(BKE_curve_editNurbs_get(cu), nu);
+ BKE_curve_nurb_vert_active_set(cu, nu, nu->bp + index);
BPoint *next_bp;
if (is_cyclic(nu) && (index == nu->pntsu - 1)) {
@@ -947,6 +945,7 @@ static void extrude_vertices_from_selected_endpoints(EditNurb *editnurb,
nu1->pntsu++;
}
cu->actnu = nu_index;
+ cu->actvert = 0;
}
else if (last_sel) {
BezTriple *new_bezt = (BezTriple *)MEM_mallocN((nu1->pntsu + 1) * sizeof(BezTriple),
@@ -959,6 +958,7 @@ static void extrude_vertices_from_selected_endpoints(EditNurb *editnurb,
nu1->bezt = new_bezt;
nu1->pntsu++;
cu->actnu = nu_index;
+ cu->actvert = nu1->pntsu - 1;
}
}
else {
@@ -991,6 +991,7 @@ static void extrude_vertices_from_selected_endpoints(EditNurb *editnurb,
}
BKE_nurb_knot_calc_u(nu1);
cu->actnu = nu_index;
+ cu->actvert = 0;
}
else if (last_sel) {
BPoint *new_bp = (BPoint *)MEM_mallocN((nu1->pntsu + 1) * sizeof(BPoint), __func__);
@@ -1004,6 +1005,7 @@ static void extrude_vertices_from_selected_endpoints(EditNurb *editnurb,
nu1->pntsu++;
BKE_nurb_knot_calc_u(nu1);
cu->actnu = nu_index;
+ cu->actvert = nu1->pntsu - 1;
}
}
nu_index++;
@@ -1347,7 +1349,7 @@ static void init_selected_bezt_handles(ListBase *nurbs)
FOREACH_SELECTED_BEZT_END
}
-static void toggle_select_bezt(BezTriple *bezt, const short bezt_idx)
+static void toggle_select_bezt(BezTriple *bezt, const short bezt_idx, Curve *cu, Nurb *nu)
{
if (bezt_idx == 1) {
if (BEZT_ISSEL_IDX(bezt, 1)) {
@@ -1365,15 +1367,20 @@ static void toggle_select_bezt(BezTriple *bezt, const short bezt_idx)
BEZT_SEL_IDX(bezt, bezt_idx);
}
}
+
+ if (BEZT_ISSEL_ANY(bezt)) {
+ BKE_curve_nurb_vert_active_set(cu, nu, bezt);
+ }
}
-static void toggle_select_bp(BPoint *bp)
+static void toggle_select_bp(BPoint *bp, Curve *cu, Nurb *nu)
{
if (bp->f1 & SELECT) {
bp->f1 &= ~SELECT;
}
else {
bp->f1 |= SELECT;
+ BKE_curve_nurb_vert_active_set(cu, nu, bp);
}
}
@@ -1604,11 +1611,11 @@ static int curve_pen_modal(bContext *C, wmOperator *op, const wmEvent *event)
else {
BEZT_SEL_IDX(bezt1, bezt_idx);
}
- cu->actnu = get_nurb_index(nurbs, nu1);
+ BKE_curve_nurb_vert_active_set(cu, nu1, bezt1);
}
else if (bp1) {
bp1->f1 |= SELECT;
- cu->actnu = get_nurb_index(nurbs, nu1);
+ BKE_curve_nurb_vert_active_set(cu, nu1, bp1);
}
cpd->selection_made = true;
@@ -1689,12 +1696,10 @@ static int curve_pen_modal(bContext *C, wmOperator *op, const wmEvent *event)
short bezt_idx;
get_closest_vertex_to_point_in_nurbs(&vc, nurbs, mval_fl, &nu, &bezt, &bp, &bezt_idx);
if (bezt) {
- toggle_select_bezt(bezt, bezt_idx);
- cu->actnu = get_nurb_index(nurbs, nu);
+ toggle_select_bezt(bezt, bezt_idx, cu, nu);
}
else if (bp) {
- toggle_select_bp(bp);
- cu->actnu = get_nurb_index(nurbs, nu);
+ toggle_select_bp(bp, cu, nu);
}
else {
ED_curve_deselect_all(cu->editnurb);
More information about the Bf-blender-cvs
mailing list