From c3107349a493be16ad0de2a29a6e29f03eebbb8b Mon Sep 17 00:00:00 2001 From: PouleyKetchoupp Date: Thu, 17 Jun 2021 17:17:05 -0700 Subject: [PATCH] Ignore disabled shapes for mass property calculations --- servers/physics/body_sw.cpp | 8 ++++++++ servers/physics_2d/body_2d_sw.cpp | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/servers/physics/body_sw.cpp b/servers/physics/body_sw.cpp index ad8ffdd389a..99da0fe0622 100644 --- a/servers/physics/body_sw.cpp +++ b/servers/physics/body_sw.cpp @@ -59,6 +59,10 @@ void BodySW::update_inertias() { real_t total_area = 0; for (int i = 0; i < get_shape_count(); i++) { + if (is_shape_disabled(i)) { + continue; + } + total_area += get_shape_area(i); } @@ -67,6 +71,10 @@ void BodySW::update_inertias() { if (total_area != 0.0) { for (int i = 0; i < get_shape_count(); i++) { + if (is_shape_disabled(i)) { + continue; + } + real_t area = get_shape_area(i); real_t mass = area * this->mass / total_area; diff --git a/servers/physics_2d/body_2d_sw.cpp b/servers/physics_2d/body_2d_sw.cpp index 5137dd52156..f6a677335a8 100644 --- a/servers/physics_2d/body_2d_sw.cpp +++ b/servers/physics_2d/body_2d_sw.cpp @@ -52,6 +52,10 @@ void Body2DSW::update_inertias() { real_t total_area = 0; for (int i = 0; i < get_shape_count(); i++) { + if (is_shape_disabled(i)) { + continue; + } + total_area += get_shape_aabb(i).get_area(); }