From 053721fe455f749fc7a0255a92014fb24ce41d0c Mon Sep 17 00:00:00 2001 From: Marcel Admiraal Date: Thu, 30 Jul 2020 14:52:10 +0100 Subject: [PATCH] Add call to Bullet pre_process() at start of dispatch_callbacks(), and add RigidBodyCollisionObjectBullet to flush queue when a shape reload is needed. --- modules/bullet/collision_object_bullet.cpp | 3 +++ modules/bullet/rigid_body_bullet.cpp | 1 + 2 files changed, 4 insertions(+) diff --git a/modules/bullet/collision_object_bullet.cpp b/modules/bullet/collision_object_bullet.cpp index 660e9afc5edf..d3268cf22d3b 100644 --- a/modules/bullet/collision_object_bullet.cpp +++ b/modules/bullet/collision_object_bullet.cpp @@ -361,6 +361,9 @@ void RigidCollisionObjectBullet::shape_changed(int p_shape_index) { void RigidCollisionObjectBullet::reload_shapes() { need_shape_reload = true; + if (space) { + space->add_to_flush_queue(this); + } } void RigidCollisionObjectBullet::do_reload_shapes() { diff --git a/modules/bullet/rigid_body_bullet.cpp b/modules/bullet/rigid_body_bullet.cpp index 5c1144b8759c..42882878de04 100644 --- a/modules/bullet/rigid_body_bullet.cpp +++ b/modules/bullet/rigid_body_bullet.cpp @@ -338,6 +338,7 @@ void RigidBodyBullet::set_space(SpaceBullet *p_space) { } void RigidBodyBullet::dispatch_callbacks() { + pre_process(); RigidCollisionObjectBullet::dispatch_callbacks(); /// The check isFirstTransformChanged is necessary in order to call integrated forces only when the first transform is sent