From b38faadf5f835c11d5697ee46b382207edf1d142 Mon Sep 17 00:00:00 2001 From: rdb Date: Thu, 6 Dec 2018 22:29:09 +0100 Subject: [PATCH] bullet: restore behavior of in_contact flag c18abad8c3373aff134dd02d099d476d094b0b69 added a call that resets the m_isInContact flag, so this resets it, for better or worse. We may want to revisit whether #349 was indeed the right fix to #250. Fixes #453 --- panda/src/bullet/bulletVehicle.cxx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/panda/src/bullet/bulletVehicle.cxx b/panda/src/bullet/bulletVehicle.cxx index f4321cd911..ba7ee35d6d 100644 --- a/panda/src/bullet/bulletVehicle.cxx +++ b/panda/src/bullet/bulletVehicle.cxx @@ -235,10 +235,13 @@ void BulletVehicle:: do_sync_b2p() { for (int i=0; i < _vehicle->getNumWheels(); i++) { - // synchronize the wheels with the (interpolated) chassis worldtransform - _vehicle->updateWheelTransform(i, true); + btWheelInfo &info = _vehicle->getWheelInfo(i); - btWheelInfo info = _vehicle->getWheelInfo(i); + // synchronize the wheels with the (interpolated) chassis worldtransform. + // It resets the m_isInContact flag, so restore that afterwards. + bool in_contact = info.m_raycastInfo.m_isInContact; + _vehicle->updateWheelTransform(i, true); + info.m_raycastInfo.m_isInContact = in_contact; PandaNode *node = (PandaNode *)info.m_clientInfo; if (node) {