Merge pull request #15093 from poke1024/canvas-editor-select
More exact picking for canvas editor
This commit is contained in:
commit
459ee51338
31 changed files with 345 additions and 46 deletions
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue