summaryrefslogtreecommitdiffstats
path: root/scene/resources/shape_line_2d.cpp
diff options
context:
space:
mode:
authorBernhard Liebl <Bernhard.Liebl@gmx.org>2017-12-27 09:28:02 +0100
committerBernhard Liebl <Bernhard.Liebl@gmx.org>2017-12-27 20:24:58 +0100
commit8505871a87b59b27acc0912a6dd815231c3b78b1 (patch)
tree31a4fdc7afe2cd3960380fa7695d508f54c043a2 /scene/resources/shape_line_2d.cpp
parent32d8b99bc31e3762ae0dc017a05567da2802a313 (diff)
downloadredot-engine-8505871a87b59b27acc0912a6dd815231c3b78b1.tar.gz
More exact picking for canvas editor
Diffstat (limited to 'scene/resources/shape_line_2d.cpp')
-rw-r--r--scene/resources/shape_line_2d.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/scene/resources/shape_line_2d.cpp b/scene/resources/shape_line_2d.cpp
index 512ff3bc56..3476b73dff 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;