diff options
author | Juan Linietsky <juan@godotengine.org> | 2018-11-14 15:55:50 -0300 |
---|---|---|
committer | Juan Linietsky <juan@godotengine.org> | 2018-11-14 15:55:50 -0300 |
commit | 16022da18793823bf9d3530f1ae9a21501b4faec (patch) | |
tree | 227b5e846d6312d90196ce9f81d712fedafee616 /scene/resources | |
parent | 88bfb27abf35b347b4fdb0def15b340f33c89209 (diff) |
Ensure that array passed to physics is always counter clockwise, fixes #15361.
Diffstat (limited to 'scene/resources')
-rw-r--r-- | scene/resources/convex_polygon_shape_2d.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/scene/resources/convex_polygon_shape_2d.cpp b/scene/resources/convex_polygon_shape_2d.cpp index f325af7ea4..fc3d3f3334 100644 --- a/scene/resources/convex_polygon_shape_2d.cpp +++ b/scene/resources/convex_polygon_shape_2d.cpp @@ -41,7 +41,11 @@ bool ConvexPolygonShape2D::_edit_is_selected_on_click(const Point2 &p_point, dou void ConvexPolygonShape2D::_update_shape() { - Physics2DServer::get_singleton()->shape_set_data(get_rid(), points); + Vector<Vector2> final_points = points; + if (Geometry::is_polygon_clockwise(final_points)) { //needs to be counter clockwise + final_points.invert(); + } + Physics2DServer::get_singleton()->shape_set_data(get_rid(), final_points); emit_changed(); } @@ -55,6 +59,7 @@ void ConvexPolygonShape2D::set_point_cloud(const Vector<Vector2> &p_points) { void ConvexPolygonShape2D::set_points(const Vector<Vector2> &p_points) { points = p_points; + _update_shape(); } |