Prioritize points in polygon editor hover
This commit is contained in:
parent
46cb7f94f7
commit
7cffb30254
1 changed files with 49 additions and 48 deletions
|
|
@ -289,8 +289,18 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event)
|
|||
return false;
|
||||
}
|
||||
|
||||
const PosVertex insert = closest_edge_point(gpoint);
|
||||
const PosVertex closest = closest_point(gpoint);
|
||||
if (closest.valid()) {
|
||||
pre_move_edit = _get_polygon(closest.polygon);
|
||||
edited_point = PosVertex(closest, xform.affine_inverse().xform(closest.pos));
|
||||
selected_point = closest;
|
||||
edge_point = PosVertex();
|
||||
canvas_item_editor->update_viewport();
|
||||
return true;
|
||||
} else {
|
||||
selected_point = Vertex();
|
||||
|
||||
const PosVertex insert = closest_edge_point(gpoint);
|
||||
if (insert.valid()) {
|
||||
Vector<Vector2> vertices = _get_polygon(insert.polygon);
|
||||
|
||||
|
|
@ -313,19 +323,6 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event)
|
|||
_commit_action();
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
//look for points to move
|
||||
const PosVertex closest = closest_point(gpoint);
|
||||
|
||||
if (closest.valid()) {
|
||||
pre_move_edit = _get_polygon(closest.polygon);
|
||||
edited_point = PosVertex(closest, xform.affine_inverse().xform(closest.pos));
|
||||
selected_point = closest;
|
||||
edge_point = PosVertex();
|
||||
canvas_item_editor->update_viewport();
|
||||
return true;
|
||||
} else {
|
||||
selected_point = Vertex();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
|
@ -437,23 +434,27 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event)
|
|||
|
||||
canvas_item_editor->update_viewport();
|
||||
} else if (mode == MODE_EDIT || (_is_line() && mode == MODE_CREATE)) {
|
||||
const PosVertex onEdgeVertex = closest_edge_point(gpoint);
|
||||
|
||||
if (onEdgeVertex.valid()) {
|
||||
hover_point = Vertex();
|
||||
edge_point = onEdgeVertex;
|
||||
canvas_item_editor->update_viewport();
|
||||
} else {
|
||||
if (edge_point.valid()) {
|
||||
edge_point = PosVertex();
|
||||
canvas_item_editor->update_viewport();
|
||||
}
|
||||
|
||||
const PosVertex new_hover_point = closest_point(gpoint);
|
||||
if (hover_point != new_hover_point) {
|
||||
hover_point = new_hover_point;
|
||||
canvas_item_editor->update_viewport();
|
||||
}
|
||||
|
||||
bool edge_hover = false;
|
||||
if (!hover_point.valid()) {
|
||||
const PosVertex on_edge_vertex = closest_edge_point(gpoint);
|
||||
|
||||
if (on_edge_vertex.valid()) {
|
||||
hover_point = Vertex();
|
||||
edge_point = on_edge_vertex;
|
||||
canvas_item_editor->update_viewport();
|
||||
edge_hover = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!edge_hover && edge_point.valid()) {
|
||||
edge_point = PosVertex();
|
||||
canvas_item_editor->update_viewport();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue