Merge pull request #10614 from poke1024/realtime-polygon-2d
Adds realtime updates to polygon 2d editing
This commit is contained in:
commit
0f7376921f
@ -694,6 +694,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
|
|||||||
set("editors/2d/pan_speed", 20);
|
set("editors/2d/pan_speed", 20);
|
||||||
|
|
||||||
set("editors/poly_editor/point_grab_radius", 8);
|
set("editors/poly_editor/point_grab_radius", 8);
|
||||||
|
set("editors/poly_editor/show_previous_outline", true);
|
||||||
|
|
||||||
set("run/window_placement/rect", 1);
|
set("run/window_placement/rect", 1);
|
||||||
hints["run/window_placement/rect"] = PropertyInfo(Variant::INT, "run/window_placement/rect", PROPERTY_HINT_ENUM, "Top Left,Centered,Custom Position,Force Maximized,Force Fullscreen");
|
hints["run/window_placement/rect"] = PropertyInfo(Variant::INT, "run/window_placement/rect", PROPERTY_HINT_ENUM, "Top Left,Centered,Custom Position,Force Maximized,Force Fullscreen");
|
||||||
|
@ -402,6 +402,11 @@ bool Polygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
|
|||||||
cpoint = canvas_item_editor->snap_point(cpoint);
|
cpoint = canvas_item_editor->snap_point(cpoint);
|
||||||
edited_point_pos = node->get_global_transform().affine_inverse().xform(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();
|
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();
|
Transform2D xform = canvas_item_editor->get_canvas_transform() * node->get_global_transform();
|
||||||
Ref<Texture> handle = get_icon("EditorHandle", "EditorIcons");
|
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++) {
|
for (int i = 0; i < poly.size(); i++) {
|
||||||
|
|
||||||
Vector2 p, p2;
|
Vector2 p, p2;
|
||||||
|
Loading…
Reference in New Issue
Block a user