diff options
author | Erwin Coumans <blender@erwincoumans.com> | 2006-06-20 09:41:28 +0400 |
---|---|---|
committer | Erwin Coumans <blender@erwincoumans.com> | 2006-06-20 09:41:28 +0400 |
commit | 4201a0bfcf2232167805835fb7f004de72d242bd (patch) | |
tree | cea2a70306fab5029d283d5da418dfa8b1835696 /extern | |
parent | c8b6425f617df7b8ba7cc9265f253c4a1a049533 (diff) |
bugfix: removing constraints should activate rigidbodies.
Diffstat (limited to 'extern')
-rwxr-xr-x | extern/bullet/BulletDynamics/ConstraintSolver/TypedConstraint.h | 9 | ||||
-rw-r--r-- | extern/bullet/Extras/PhysicsInterface/CcdPhysics/CcdPhysicsEnvironment.cpp | 8 |
2 files changed, 17 insertions, 0 deletions
diff --git a/extern/bullet/BulletDynamics/ConstraintSolver/TypedConstraint.h b/extern/bullet/BulletDynamics/ConstraintSolver/TypedConstraint.h index 50a5ab20f9a..0bc18075d19 100755 --- a/extern/bullet/BulletDynamics/ConstraintSolver/TypedConstraint.h +++ b/extern/bullet/BulletDynamics/ConstraintSolver/TypedConstraint.h @@ -50,6 +50,15 @@ public: return m_rbB; } + RigidBody& GetRigidBodyA() + { + return m_rbA; + } + RigidBody& GetRigidBodyB() + { + return m_rbB; + } + int GetUserConstraintType() const { return m_userConstraintType ; diff --git a/extern/bullet/Extras/PhysicsInterface/CcdPhysics/CcdPhysicsEnvironment.cpp b/extern/bullet/Extras/PhysicsInterface/CcdPhysics/CcdPhysicsEnvironment.cpp index f6482e2c3e7..f169059cf37 100644 --- a/extern/bullet/Extras/PhysicsInterface/CcdPhysics/CcdPhysicsEnvironment.cpp +++ b/extern/bullet/Extras/PhysicsInterface/CcdPhysics/CcdPhysicsEnvironment.cpp @@ -1277,7 +1277,15 @@ void CcdPhysicsEnvironment::removeConstraint(int constraintId) TypedConstraint* constraint = (*i); if (constraint->GetUserConstraintId() == constraintId) { + //activate objects + if (constraint->GetRigidBodyA().mergesSimulationIslands()) + constraint->GetRigidBodyA().activate(); + if (constraint->GetRigidBodyB().mergesSimulationIslands()) + constraint->GetRigidBodyB().activate(); + std::swap(*i, m_constraints.back()); + + m_constraints.pop_back(); break; } |