Reload kinematic shapes when changing PhysicsBody mode to Kinematic to prevent a crash when calling test_body_motion. Call reload_kinematic_shapes from init_kinematic_utilities as they are always called together.
This commit is contained in:
parent
8138280d20
commit
112985c5bc
2 changed files with 1 additions and 3 deletions
|
@ -303,6 +303,7 @@ RigidBodyBullet::~RigidBodyBullet() {
|
||||||
|
|
||||||
void RigidBodyBullet::init_kinematic_utilities() {
|
void RigidBodyBullet::init_kinematic_utilities() {
|
||||||
kinematic_utilities = memnew(KinematicUtilities(this));
|
kinematic_utilities = memnew(KinematicUtilities(this));
|
||||||
|
reload_kinematic_shapes();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RigidBodyBullet::destroy_kinematic_utilities() {
|
void RigidBodyBullet::destroy_kinematic_utilities() {
|
||||||
|
@ -534,7 +535,6 @@ void RigidBodyBullet::set_mode(PhysicsServer3D::BodyMode p_mode) {
|
||||||
mode = PhysicsServer3D::BODY_MODE_KINEMATIC;
|
mode = PhysicsServer3D::BODY_MODE_KINEMATIC;
|
||||||
reload_axis_lock();
|
reload_axis_lock();
|
||||||
_internal_set_mass(0);
|
_internal_set_mass(0);
|
||||||
init_kinematic_utilities();
|
|
||||||
break;
|
break;
|
||||||
case PhysicsServer3D::BODY_MODE_STATIC:
|
case PhysicsServer3D::BODY_MODE_STATIC:
|
||||||
mode = PhysicsServer3D::BODY_MODE_STATIC;
|
mode = PhysicsServer3D::BODY_MODE_STATIC;
|
||||||
|
|
|
@ -947,7 +947,6 @@ bool SpaceBullet::test_body_motion(RigidBodyBullet *p_body, const Transform3D &p
|
||||||
|
|
||||||
if (!p_body->get_kinematic_utilities()) {
|
if (!p_body->get_kinematic_utilities()) {
|
||||||
p_body->init_kinematic_utilities();
|
p_body->init_kinematic_utilities();
|
||||||
p_body->reload_kinematic_shapes();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
btVector3 initial_recover_motion(0, 0, 0);
|
btVector3 initial_recover_motion(0, 0, 0);
|
||||||
|
@ -1089,7 +1088,6 @@ int SpaceBullet::test_ray_separation(RigidBodyBullet *p_body, const Transform3D
|
||||||
|
|
||||||
if (!p_body->get_kinematic_utilities()) {
|
if (!p_body->get_kinematic_utilities()) {
|
||||||
p_body->init_kinematic_utilities();
|
p_body->init_kinematic_utilities();
|
||||||
p_body->reload_kinematic_shapes();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
btVector3 recover_motion(0, 0, 0);
|
btVector3 recover_motion(0, 0, 0);
|
||||||
|
|
Loading…
Reference in a new issue