[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