Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/extern
diff options
context:
space:
mode:
authorErwin Coumans <blender@erwincoumans.com>2006-06-20 09:41:28 +0400
committerErwin Coumans <blender@erwincoumans.com>2006-06-20 09:41:28 +0400
commit4201a0bfcf2232167805835fb7f004de72d242bd (patch)
treecea2a70306fab5029d283d5da418dfa8b1835696 /extern
parentc8b6425f617df7b8ba7cc9265f253c4a1a049533 (diff)
bugfix: removing constraints should activate rigidbodies.
Diffstat (limited to 'extern')
-rwxr-xr-xextern/bullet/BulletDynamics/ConstraintSolver/TypedConstraint.h9
-rw-r--r--extern/bullet/Extras/PhysicsInterface/CcdPhysics/CcdPhysicsEnvironment.cpp8
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;
}