Merge pull request #15093 from poke1024/canvas-editor-select

More exact picking for canvas editor
This commit is contained in:
Rémi Verschelde 2018-01-03 11:15:28 +01:00 committed by GitHub
commit 459ee51338
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
31 changed files with 345 additions and 46 deletions

View file

@ -32,6 +32,23 @@
#include "servers/physics_2d_server.h"
#include "servers/visual_server.h"
bool ConcavePolygonShape2D::_edit_is_selected_on_click(const Point2 &p_point, double p_tolerance) const {
PoolVector<Vector2> s = get_segments();
int len = s.size();
if (len == 0 || (len % 2) == 1)
return false;
PoolVector<Vector2>::Read r = s.read();
for (int i = 0; i < len; i += 2) {
Vector2 closest = Geometry::get_closest_point_to_segment_2d(p_point, &r[i]);
if (p_point.distance_to(closest) < p_tolerance)
return true;
}
return false;
}
void ConcavePolygonShape2D::set_segments(const PoolVector<Vector2> &p_segments) {
Physics2DServer::get_singleton()->shape_set_data(get_rid(), p_segments);