BGE Fix T39026: No collisions detected with parented rigid body object

Fix for T39026. Preliminary investigation by blenderscripter on D446.
Also it solves bug T41285 (Parenting object leave collission box).

Refactor commit b90de0331d introduced a
regression bug.

Reviewers: sergof, campbellbarton, moguri

Reviewed By: moguri

Subscribers: blueprintrandom, blenderscripter

Differential Revision: https://developer.blender.org/D1064
This commit is contained in:
Jorge Bernal 2015-02-12 23:56:50 +01:00
parent eda2d563bc
commit 9e217ccb2e
Notes: blender-bot 2023-02-14 11:21:40 +01:00
Referenced by issue #41285, Parenting object leave collission box.
Referenced by issue #39026, 2.7 BGE: No collisions detected with parented rigid body object
2 changed files with 5 additions and 0 deletions

View File

@ -148,6 +148,7 @@ CcdPhysicsController::CcdPhysicsController (const CcdConstructionInfo& ci)
m_savedCollisionFilterGroup = 0;
m_savedCollisionFilterMask = 0;
m_savedMass = 0.0;
m_savedDyna = false;
m_suspended = false;
CreateRigidbody();
@ -1068,6 +1069,7 @@ void CcdPhysicsController::SuspendDynamics(bool ghost)
m_savedCollisionFlags = body->getCollisionFlags();
m_savedMass = GetMass();
m_savedDyna = m_cci.m_bDyna;
m_savedCollisionFilterGroup = handle->m_collisionFilterGroup;
m_savedCollisionFilterMask = handle->m_collisionFilterMask;
m_suspended = true;
@ -1076,6 +1078,7 @@ void CcdPhysicsController::SuspendDynamics(bool ghost)
btCollisionObject::CF_STATIC_OBJECT|((ghost)?btCollisionObject::CF_NO_CONTACT_RESPONSE:(m_savedCollisionFlags&btCollisionObject::CF_NO_CONTACT_RESPONSE)),
btBroadphaseProxy::StaticFilter,
btBroadphaseProxy::AllFilter ^ btBroadphaseProxy::StaticFilter);
m_cci.m_bDyna = false;
}
}
@ -1092,6 +1095,7 @@ void CcdPhysicsController::RestoreDynamics()
m_savedCollisionFilterGroup,
m_savedCollisionFilterMask);
body->activate();
m_cci.m_bDyna = m_savedDyna;
m_suspended = false;
}
}

View File

@ -480,6 +480,7 @@ protected:
short m_savedCollisionFilterGroup;
short m_savedCollisionFilterMask;
MT_Scalar m_savedMass;
bool m_savedDyna;
bool m_suspended;