[Bf-blender-cvs] [5164a6018ca] soc-2021-curves: Added support for converting to vector handles
dilithjay
noreply at git.blender.org
Sun Jan 2 11:03:17 CET 2022
Commit: 5164a6018ca6e304320e6eccd65c380959ac4d4e
Author: dilithjay
Date: Sun Jan 2 00:15:24 2022 +0530
Branches: soc-2021-curves
https://developer.blender.org/rB5164a6018ca6e304320e6eccd65c380959ac4d4e
Added support for converting to vector handles
===================================================================
M release/scripts/presets/keyconfig/keymap_data/blender_default.py
M source/blender/editors/curve/editcurve_pen.c
===================================================================
diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
index 008331120fc..374a23ca440 100644
--- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py
+++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
@@ -7004,6 +7004,8 @@ def km_3d_view_tool_edit_curve_pen(params):
{"properties": [("delete_point", True),]}),
("curve.pen", {"type": params.tool_mouse, "value": 'PRESS', "shift": True},
{"properties": [("insert_point", True),]}),
+ ("curve.pen", {"type": params.tool_mouse, "value": 'DOUBLE_CLICK'},
+ {"properties": [("make_vector", True),]}),
]},
)
diff --git a/source/blender/editors/curve/editcurve_pen.c b/source/blender/editors/curve/editcurve_pen.c
index 77c6ab4015f..14842c033c7 100644
--- a/source/blender/editors/curve/editcurve_pen.c
+++ b/source/blender/editors/curve/editcurve_pen.c
@@ -1160,6 +1160,7 @@ static int curve_pen_modal(bContext *C, wmOperator *op, const wmEvent *event)
const bool select_point = RNA_boolean_get(op->ptr, "select_point");
const bool move_point = RNA_boolean_get(op->ptr, "move_point");
const bool close_spline = RNA_boolean_get(op->ptr, "close_spline");
+ const bool make_vector = RNA_boolean_get(op->ptr, "make_vector");
if (!cpd->extra_pressed && is_event_key_equal_to_extra_key(event->type, extra_key)) {
ED_curve_nurb_vert_selected_find(vc.obedit->data, vc.v3d, &nu, &bezt, &bp);
@@ -1310,9 +1311,30 @@ static int curve_pen_modal(bContext *C, wmOperator *op, const wmEvent *event)
if (insert_point && move_seg) {
insert_point_to_segment(event, vc.obedit->data, &nu, sel_dist_mul, &vc);
cpd->new_point = true;
+ cpd->acted = true;
}
else if (extrude_point) {
extrude_point_from_selected_vertex(&vc, obedit, event, extrude_center);
+ cpd->acted = true;
+ }
+ }
+ }
+
+ if (!cpd->acted && make_vector) {
+ short bezt_idx;
+ float mval_fl[2] = {(float)event->mval[0], (float)event->mval[1]};
+ get_closest_vertex_to_point_in_nurbs(
+ &(cu->editnurb->nurbs), &nu, &bezt, &bp, &bezt_idx, mval_fl, sel_dist_mul, &vc);
+ if (bezt) {
+ if (bezt_idx == 0) {
+ bezt->h1 = HD_VECT;
+ }
+ else if (bezt_idx == 2) {
+ bezt->h2 = HD_VECT;
+ }
+
+ if (nu && nu->type == CU_BEZIER) {
+ BKE_nurb_handles_calc(nu);
}
}
}
@@ -1414,4 +1436,6 @@ void CURVE_OT_pen(wmOperatorType *ot)
false,
"Close Spline",
"Make a spline cyclic by clicking endpoints");
+ prop = RNA_def_boolean(
+ ot->srna, "make_vector", false, "Make Vector", "Click handle to convert to vector handle");
}
More information about the Bf-blender-cvs
mailing list