diff options
| author | Rémi Verschelde | 2017-08-28 23:58:34 +0200 |
|---|---|---|
| committer | GitHub | 2017-08-28 23:58:34 +0200 |
| commit | 0f7376921f8e1d150933c3abb0474b9e8a8d14cc (patch) | |
| tree | 1056be4bcec214ba04d0abc46a4dce35ee87d3d8 /editor/plugins/polygon_2d_editor_plugin.cpp | |
| parent | 2353c65a1f1393e132940e5fe939c1fd0bc714b6 (diff) | |
| parent | 1ea2b9be7205c6c070e2e93d14efd8b5023c2d61 (diff) | |
| download | godot-0f7376921f8e1d150933c3abb0474b9e8a8d14cc.tar.gz godot-0f7376921f8e1d150933c3abb0474b9e8a8d14cc.tar.zst godot-0f7376921f8e1d150933c3abb0474b9e8a8d14cc.zip | |
Merge pull request #10614 from poke1024/realtime-polygon-2d
Adds realtime updates to polygon 2d editing
Diffstat (limited to 'editor/plugins/polygon_2d_editor_plugin.cpp')
| -rw-r--r-- | editor/plugins/polygon_2d_editor_plugin.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/editor/plugins/polygon_2d_editor_plugin.cpp b/editor/plugins/polygon_2d_editor_plugin.cpp index 88158d4b2..d04184f05 100644 --- a/editor/plugins/polygon_2d_editor_plugin.cpp +++ b/editor/plugins/polygon_2d_editor_plugin.cpp @@ -402,6 +402,11 @@ bool Polygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) { cpoint = canvas_item_editor->snap_point(cpoint); edited_point_pos = node->get_global_transform().affine_inverse().xform(cpoint); + Vector<Vector2> poly = Variant(node->get_polygon()); + ERR_FAIL_INDEX_V(edited_point, poly.size(), false); + poly[edited_point] = edited_point_pos - node->get_offset(); + node->set_polygon(Variant(poly)); + canvas_item_editor->get_viewport_control()->update(); } } @@ -425,6 +430,23 @@ void Polygon2DEditor::_canvas_draw() { Transform2D xform = canvas_item_editor->get_canvas_transform() * node->get_global_transform(); Ref<Texture> handle = get_icon("EditorHandle", "EditorIcons"); + if (edited_point >= 0 && EDITOR_DEF("editors/poly_editor/show_previous_outline", true)) { + + const Color col = node->get_color().contrasted(); + const int n = pre_move_edit.size(); + for (int i = 0; i < n; i++) { + + Vector2 p, p2; + p = pre_move_edit[i] + node->get_offset(); + p2 = pre_move_edit[(i + 1) % n] + node->get_offset(); + + Vector2 point = xform.xform(p); + Vector2 next_point = xform.xform(p2); + + vpc->draw_line(point, next_point, col, 2); + } + } + for (int i = 0; i < poly.size(); i++) { Vector2 p, p2; |
