diff options
-rw-r--r-- | editor/plugins/tile_set_editor_plugin.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/editor/plugins/tile_set_editor_plugin.cpp b/editor/plugins/tile_set_editor_plugin.cpp index a8cf5b46e1..dd61e13ae6 100644 --- a/editor/plugins/tile_set_editor_plugin.cpp +++ b/editor/plugins/tile_set_editor_plugin.cpp @@ -1529,13 +1529,15 @@ void TileSetEditor::_on_workspace_input(const Ref<InputEvent> &p_ie) { shape_anchor.y *= (size.y + spacing); } const real_t grab_threshold = EDITOR_GET("editors/poly_editor/point_grab_radius"); + Transform2D xform = workspace->get_transform(); shape_anchor += current_tile_region.position; if (tools[TOOL_SELECT]->is_pressed()) { if (mb.is_valid()) { if (mb->is_pressed() && mb->get_button_index() == BUTTON_LEFT) { if (edit_mode != EDITMODE_PRIORITY && current_shape.size() > 0) { for (int i = 0; i < current_shape.size(); i++) { - if ((current_shape[i] - mb->get_position()).length_squared() <= grab_threshold) { + const real_t distance = xform.xform(current_shape[i]).distance_to(xform.xform(mb->get_position())); + if (distance < grab_threshold) { dragging_point = i; workspace->update(); return; @@ -1634,7 +1636,8 @@ void TileSetEditor::_on_workspace_input(const Ref<InputEvent> &p_ie) { pos = snap_point(pos); if (creating_shape) { if (current_shape.size() > 0) { - if ((pos - current_shape[0]).length_squared() <= grab_threshold) { + const real_t distance = xform.xform(current_shape[0]).distance_to(xform.xform(pos)); + if (distance <= grab_threshold) { if (current_shape.size() > 2) { close_shape(shape_anchor); workspace->update(); @@ -1685,7 +1688,8 @@ void TileSetEditor::_on_workspace_input(const Ref<InputEvent> &p_ie) { } } else if (!mb->is_pressed() && mb->get_button_index() == BUTTON_LEFT) { if (creating_shape) { - if ((current_shape[0] - current_shape[1]).length_squared() <= grab_threshold) { + const real_t distance = xform.xform(current_shape[0]).distance_to(xform.xform(current_shape[1])); + if (distance <= grab_threshold) { current_shape.set(0, snap_point(shape_anchor)); current_shape.set(1, snap_point(shape_anchor + Vector2(current_tile_region.size.x, 0))); current_shape.set(2, snap_point(shape_anchor + current_tile_region.size)); |