From b6f07a007a6cd661577f147491d7d0e95e81363c Mon Sep 17 00:00:00 2001 From: Ricardo Buring Date: Sat, 23 Mar 2024 18:31:11 +0100 Subject: [PATCH] Fix concave CollisionPolygon2D debug drawing and docs --- doc/classes/CollisionPolygon2D.xml | 2 +- scene/2d/physics/collision_polygon_2d.cpp | 17 ++++++++--------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/doc/classes/CollisionPolygon2D.xml b/doc/classes/CollisionPolygon2D.xml index 12f7024518af..29535ffd6481 100644 --- a/doc/classes/CollisionPolygon2D.xml +++ b/doc/classes/CollisionPolygon2D.xml @@ -4,7 +4,7 @@ A node that provides a polygon shape to a [CollisionObject2D] parent. - A node that provides a thickened polygon shape (a prism) to a [CollisionObject2D] parent and allows to edit it. The polygon can be concave or convex. This can give a detection shape to an [Area2D] or turn [PhysicsBody2D] into a solid object. + A node that provides a polygon shape to a [CollisionObject2D] parent and allows to edit it. The polygon can be concave or convex. This can give a detection shape to an [Area2D], turn [PhysicsBody2D] into a solid object, or give a hollow shape to a [StaticBody2D]. [b]Warning:[/b] A non-uniformly scaled [CollisionShape2D] will likely not behave as expected. Make sure to keep its scale the same on all axes and adjust its shape resource instead. diff --git a/scene/2d/physics/collision_polygon_2d.cpp b/scene/2d/physics/collision_polygon_2d.cpp index 96ef346d2318..72ee4d52c5f0 100644 --- a/scene/2d/physics/collision_polygon_2d.cpp +++ b/scene/2d/physics/collision_polygon_2d.cpp @@ -132,17 +132,16 @@ void CollisionPolygon2D::_notification(int p_what) { } if (polygon.size() > 2) { -#define DEBUG_DECOMPOSE -#if defined(TOOLS_ENABLED) && defined(DEBUG_DECOMPOSE) - Vector> decomp = _decompose_in_convex(); +#ifdef TOOLS_ENABLED + if (build_mode == BUILD_SOLIDS) { + Vector> decomp = _decompose_in_convex(); - Color c(0.4, 0.9, 0.1); - for (int i = 0; i < decomp.size(); i++) { - c.set_hsv(Math::fmod(c.get_h() + 0.738, 1), c.get_s(), c.get_v(), 0.5); - draw_colored_polygon(decomp[i], c); + Color c(0.4, 0.9, 0.1); + for (int i = 0; i < decomp.size(); i++) { + c.set_hsv(Math::fmod(c.get_h() + 0.738, 1), c.get_s(), c.get_v(), 0.5); + draw_colored_polygon(decomp[i], c); + } } -#else - draw_colored_polygon(polygon, get_tree()->get_debug_collisions_color()); #endif const Color stroke_color = Color(0.9, 0.2, 0.0);