diff options
| -rw-r--r-- | core/core_bind.cpp | 12 | ||||
| -rw-r--r-- | core/core_bind.h | 1 | ||||
| -rw-r--r-- | doc/classes/Geometry2D.xml | 7 | 
3 files changed, 20 insertions, 0 deletions
diff --git a/core/core_bind.cpp b/core/core_bind.cpp index 2149ee4512..a164221fc2 100644 --- a/core/core_bind.cpp +++ b/core/core_bind.cpp @@ -709,6 +709,17 @@ Vector<Point2> Geometry2D::convex_hull(const Vector<Point2> &p_points) {  	return ::Geometry2D::convex_hull(p_points);  } +TypedArray<PackedVector2Array> Geometry2D::decompose_polygon_in_convex(const Vector<Vector2> &p_polygon) { +	Vector<Vector<Point2>> decomp = ::Geometry2D::decompose_polygon_in_convex(p_polygon); + +	TypedArray<PackedVector2Array> ret; + +	for (int i = 0; i < decomp.size(); ++i) { +		ret.push_back(decomp[i]); +	} +	return ret; +} +  TypedArray<PackedVector2Array> Geometry2D::merge_polygons(const Vector<Vector2> &p_polygon_a, const Vector<Vector2> &p_polygon_b) {  	Vector<Vector<Point2>> polys = ::Geometry2D::merge_polygons(p_polygon_a, p_polygon_b); @@ -840,6 +851,7 @@ void Geometry2D::_bind_methods() {  	ClassDB::bind_method(D_METHOD("triangulate_polygon", "polygon"), &Geometry2D::triangulate_polygon);  	ClassDB::bind_method(D_METHOD("triangulate_delaunay", "points"), &Geometry2D::triangulate_delaunay);  	ClassDB::bind_method(D_METHOD("convex_hull", "points"), &Geometry2D::convex_hull); +	ClassDB::bind_method(D_METHOD("decompose_polygon_in_convex", "polygon"), &Geometry2D::decompose_polygon_in_convex);  	ClassDB::bind_method(D_METHOD("merge_polygons", "polygon_a", "polygon_b"), &Geometry2D::merge_polygons);  	ClassDB::bind_method(D_METHOD("clip_polygons", "polygon_a", "polygon_b"), &Geometry2D::clip_polygons); diff --git a/core/core_bind.h b/core/core_bind.h index 345c517b99..3ca2da0acf 100644 --- a/core/core_bind.h +++ b/core/core_bind.h @@ -289,6 +289,7 @@ public:  	Vector<int> triangulate_polygon(const Vector<Vector2> &p_polygon);  	Vector<int> triangulate_delaunay(const Vector<Vector2> &p_points);  	Vector<Point2> convex_hull(const Vector<Point2> &p_points); +	TypedArray<PackedVector2Array> decompose_polygon_in_convex(const Vector<Vector2> &p_polygon);  	enum PolyBooleanOperation {  		OPERATION_UNION, diff --git a/doc/classes/Geometry2D.xml b/doc/classes/Geometry2D.xml index e613ab1a55..0142018f1a 100644 --- a/doc/classes/Geometry2D.xml +++ b/doc/classes/Geometry2D.xml @@ -33,6 +33,13 @@  				Given an array of [Vector2]s, returns the convex hull as a list of points in counterclockwise order. The last point is the same as the first one.  			</description>  		</method> +		<method name="decompose_polygon_in_convex"> +			<return type="PackedVector2Array[]" /> +			<param index="0" name="polygon" type="PackedVector2Array" /> +			<description> +				Decomposes the [param polygon] into multiple convex hulls and returns an array of [PackedVector2Array]. +			</description> +		</method>  		<method name="exclude_polygons">  			<return type="PackedVector2Array[]" />  			<param index="0" name="polygon_a" type="PackedVector2Array" />  |