diff options
author | Matheus Lima Cunha <matheus.limacunha@hotmail.com> | 2019-04-15 15:01:29 -0300 |
---|---|---|
committer | Matheus Lima Cunha <matheus.limacunha@hotmail.com> | 2019-04-16 20:26:22 -0300 |
commit | 0110a88547b87bcd066f1ae74f46b2ba8b7ab2a5 (patch) | |
tree | 9c94b0fc285db318d7e2667e77e006f38898b420 | |
parent | 06e580f5ba801cf524b1d82753127a9992c7b907 (diff) |
Move vertex along a single axis while editing and holding shift
-rw-r--r-- | editor/plugins/abstract_polygon_2d_editor.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/editor/plugins/abstract_polygon_2d_editor.cpp b/editor/plugins/abstract_polygon_2d_editor.cpp index 4a4e7f25b8..1afd7df049 100644 --- a/editor/plugins/abstract_polygon_2d_editor.cpp +++ b/editor/plugins/abstract_polygon_2d_editor.cpp @@ -481,6 +481,17 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) if (edited_point.valid() && (wip_active || (mm->get_button_mask() & BUTTON_MASK_LEFT))) { Vector2 cpoint = _get_node()->get_global_transform().affine_inverse().xform(canvas_item_editor->snap_point(canvas_item_editor->get_canvas_transform().affine_inverse().xform(gpoint))); + + //Move the point in a single axis. Should only work when editing a polygon and while holding shift. + if (mode == MODE_EDIT && mm->get_shift()) { + Vector2 old_point = pre_move_edit.get(selected_point.vertex); + if (ABS(cpoint.x - old_point.x) > ABS(cpoint.y - old_point.y)) { + cpoint.y = old_point.y; + } else { + cpoint.x = old_point.x; + } + } + edited_point = PosVertex(edited_point, cpoint); if (!wip_active) { |