1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-08 12:40:44 +00:00

polygon2d realtime editing

editing nodes in the polygon2d editor now updates the polygon in realtime; the previous outline is shown, but this can be disabled via a new editor setting
This commit is contained in:
Bernhard Liebl
2017-08-26 11:57:54 +02:00
parent 3ea0943f64
commit 1ea2b9be72
2 changed files with 23 additions and 0 deletions

View File

@@ -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;