diff options
| author | Rémi Verschelde | 2018-01-03 11:15:28 +0100 |
|---|---|---|
| committer | GitHub | 2018-01-03 11:15:28 +0100 |
| commit | 459ee51338ff9ffb8248a4351eee3b558438aa50 (patch) | |
| tree | b366aad4e6ee15907af75cb659f42b5ec79b6f58 /scene/resources/shape_line_2d.cpp | |
| parent | 0b235a5efa9f6825e638d98d9eaadcc11423b3c3 (diff) | |
| parent | 8505871a87b59b27acc0912a6dd815231c3b78b1 (diff) | |
| download | godot-459ee51338ff9ffb8248a4351eee3b558438aa50.tar.gz godot-459ee51338ff9ffb8248a4351eee3b558438aa50.tar.zst godot-459ee51338ff9ffb8248a4351eee3b558438aa50.zip | |
Merge pull request #15093 from poke1024/canvas-editor-select
More exact picking for canvas editor
Diffstat (limited to 'scene/resources/shape_line_2d.cpp')
| -rw-r--r-- | scene/resources/shape_line_2d.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/scene/resources/shape_line_2d.cpp b/scene/resources/shape_line_2d.cpp index c6cc3659f..9548d3537 100644 --- a/scene/resources/shape_line_2d.cpp +++ b/scene/resources/shape_line_2d.cpp @@ -30,6 +30,21 @@ #include "shape_line_2d.h" #include "servers/physics_2d_server.h" #include "servers/visual_server.h" + +bool LineShape2D::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const { + + Vector2 point = get_d() * get_normal(); + Vector2 l[2][2] = { { point - get_normal().tangent() * 100, point + get_normal().tangent() * 100 }, { point, point + get_normal() * 30 } }; + + for (int i = 0; i < 2; i++) { + Vector2 closest = Geometry::get_closest_point_to_segment_2d(p_point, l[i]); + if (p_point.distance_to(closest) < p_tolerance) + return true; + } + + return false; +} + void LineShape2D::_update_shape() { Array arr; |
