Fix T37566: KX_GameObject.resumeDynamics() was not properly restoring collision groups and masks.
This commit is contained in:
parent
72272d2e4f
commit
eba07b77da
Notes:
blender-bot
2023-02-14 11:34:30 +01:00
Referenced by issue #37812, Blank rectangles in sculpt brush stroke
Referenced by issue #37680, Texture image scale is not refreshing
Referenced by issue #37566, {suspend,restore}Dynamics behaviour change between 2.69 and -current (91f0a38
)
|
@ -145,6 +145,8 @@ CcdPhysicsController::CcdPhysicsController (const CcdConstructionInfo& ci)
|
|||
m_bulletMotionState = 0;
|
||||
m_characterController = 0;
|
||||
m_savedCollisionFlags = 0;
|
||||
m_savedCollisionFilterGroup = 0;
|
||||
m_savedCollisionFilterMask = 0;
|
||||
m_savedMass = 0.0;
|
||||
m_suspended = false;
|
||||
|
||||
|
@ -1057,8 +1059,12 @@ void CcdPhysicsController::SuspendDynamics(bool ghost)
|
|||
btRigidBody *body = GetRigidBody();
|
||||
if (body && !m_suspended && !GetConstructionInfo().m_bSensor)
|
||||
{
|
||||
btBroadphaseProxy* handle = body->getBroadphaseHandle();
|
||||
|
||||
m_savedCollisionFlags = body->getCollisionFlags();
|
||||
m_savedMass = GetMass();
|
||||
m_savedCollisionFilterGroup = handle->m_collisionFilterGroup;
|
||||
m_savedCollisionFilterMask = handle->m_collisionFilterMask;
|
||||
m_suspended = true;
|
||||
GetPhysicsEnvironment()->UpdateCcdPhysicsController(this,
|
||||
0.0,
|
||||
|
@ -1078,8 +1084,8 @@ void CcdPhysicsController::RestoreDynamics()
|
|||
GetPhysicsEnvironment()->UpdateCcdPhysicsController(this,
|
||||
m_savedMass,
|
||||
m_savedCollisionFlags,
|
||||
GetConstructionInfo().m_collisionFilterGroup,
|
||||
GetConstructionInfo().m_collisionFilterMask);
|
||||
m_savedCollisionFilterGroup,
|
||||
m_savedCollisionFilterMask);
|
||||
body->activate();
|
||||
m_suspended = false;
|
||||
}
|
||||
|
|
|
@ -478,9 +478,12 @@ protected:
|
|||
CcdPhysicsController* m_parentCtrl;
|
||||
|
||||
int m_savedCollisionFlags;
|
||||
short m_savedCollisionFilterGroup;
|
||||
short m_savedCollisionFilterMask;
|
||||
MT_Scalar m_savedMass;
|
||||
bool m_suspended;
|
||||
|
||||
|
||||
void GetWorldOrientation(btMatrix3x3& mat);
|
||||
|
||||
void CreateRigidbody();
|
||||
|
|
Loading…
Reference in New Issue