diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2019-06-27 01:03:51 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-27 01:03:51 +0200 |
commit | d8c96461183f0dc3208c3d624674fa4544212ea5 (patch) | |
tree | a6c61caee9e9cfb19f1a05b5560a6b6d90b86a30 | |
parent | 65a7eba91ce8976bdb5e509a2211744f2023b9c8 (diff) | |
parent | 6f2233d13a1524ea184c30af066fd65278dcc610 (diff) |
Merge pull request #30105 from Xrayez/bind-pip-geometry
Bind is_point_in_polygon in Geometry singleton
-rw-r--r-- | core/bind/core_bind.cpp | 6 | ||||
-rw-r--r-- | core/bind/core_bind.h | 1 | ||||
-rw-r--r-- | doc/classes/Geometry.xml | 11 |
3 files changed, 18 insertions, 0 deletions
diff --git a/core/bind/core_bind.cpp b/core/bind/core_bind.cpp index 8a898f3b53..b6591a4901 100644 --- a/core/bind/core_bind.cpp +++ b/core/bind/core_bind.cpp @@ -1524,6 +1524,11 @@ bool _Geometry::is_polygon_clockwise(const Vector<Vector2> &p_polygon) { return Geometry::is_polygon_clockwise(p_polygon); } +bool _Geometry::is_point_in_polygon(const Point2 &p_point, const Vector<Vector2> &p_polygon) { + + return Geometry::is_point_in_polygon(p_point, p_polygon); +} + Vector<int> _Geometry::triangulate_polygon(const Vector<Vector2> &p_polygon) { return Geometry::triangulate_polygon(p_polygon); @@ -1706,6 +1711,7 @@ void _Geometry::_bind_methods() { ClassDB::bind_method(D_METHOD("point_is_inside_triangle", "point", "a", "b", "c"), &_Geometry::point_is_inside_triangle); ClassDB::bind_method(D_METHOD("is_polygon_clockwise", "polygon"), &_Geometry::is_polygon_clockwise); + ClassDB::bind_method(D_METHOD("is_point_in_polygon", "point", "polygon"), &_Geometry::is_point_in_polygon); ClassDB::bind_method(D_METHOD("triangulate_polygon", "polygon"), &_Geometry::triangulate_polygon); ClassDB::bind_method(D_METHOD("triangulate_delaunay_2d", "points"), &_Geometry::triangulate_delaunay_2d); ClassDB::bind_method(D_METHOD("convex_hull_2d", "points"), &_Geometry::convex_hull_2d); diff --git a/core/bind/core_bind.h b/core/bind/core_bind.h index 7d0c158f51..2885e7c0e0 100644 --- a/core/bind/core_bind.h +++ b/core/bind/core_bind.h @@ -408,6 +408,7 @@ public: int get_uv84_normal_bit(const Vector3 &p_vector); bool is_polygon_clockwise(const Vector<Vector2> &p_polygon); + bool is_point_in_polygon(const Point2 &p_point, const Vector<Vector2> &p_polygon); Vector<int> triangulate_polygon(const Vector<Vector2> &p_polygon); Vector<int> triangulate_delaunay_2d(const Vector<Vector2> &p_points); Vector<Point2> convex_hull_2d(const Vector<Point2> &p_points); diff --git a/doc/classes/Geometry.xml b/doc/classes/Geometry.xml index e2ba3fb7b0..6fb4341b3c 100644 --- a/doc/classes/Geometry.xml +++ b/doc/classes/Geometry.xml @@ -216,6 +216,17 @@ Intersects [code]polyline[/code] with [code]polygon[/code] and returns an array of intersected polylines. This performs [code]OPERATION_INTERSECTION[/code] between the polyline and the polygon. This operation can be thought of as chopping a line with a closed shape. </description> </method> + <method name="is_point_in_polygon"> + <return type="bool"> + </return> + <argument index="0" name="point" type="Vector2"> + </argument> + <argument index="1" name="polygon" type="PoolVector2Array"> + </argument> + <description> + Returns [code]true[/code] if [code]point[/code] is inside [code]polygon[/code] or if it's located exactly [i]on[/i] polygon's boundary, otherwise returns [code]false[/code]. + </description> + </method> <method name="is_polygon_clockwise"> <return type="bool"> </return> |