added 'getConstraintSolver' and ability to 'reset' (set randseeds back to zero, and clear internal caches)

This commit is contained in:
ejcoumans
2007-07-27 23:54:22 +00:00
parent a1fabc4b91
commit 0df4cedc3e
8 changed files with 31 additions and 0 deletions

View File

@@ -35,8 +35,12 @@ public:
virtual ~btConstraintSolver() {} virtual ~btConstraintSolver() {}
///solve a group of constraints
virtual btScalar solveGroup(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifold,int numManifolds,btTypedConstraint** constraints,int numConstraints, const btContactSolverInfo& info,class btIDebugDraw* debugDrawer, btStackAlloc* stackAlloc) = 0; virtual btScalar solveGroup(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifold,int numManifolds,btTypedConstraint** constraints,int numConstraints, const btContactSolverInfo& info,class btIDebugDraw* debugDrawer, btStackAlloc* stackAlloc) = 0;
///clear internal cached data and reset random seed
virtual void reset() = 0;
}; };

View File

@@ -1156,3 +1156,10 @@ btScalar btSequentialImpulseConstraintSolver::solveFriction(btRigidBody* body0,b
} }
return btScalar(0.); return btScalar(0.);
} }
void btSequentialImpulseConstraintSolver::reset()
{
m_btSeed2 = 0;
}

View File

@@ -74,6 +74,9 @@ public:
virtual btScalar solveGroupCacheFriendly(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer,btStackAlloc* stackAlloc); virtual btScalar solveGroupCacheFriendly(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifoldPtr, int numManifolds,btTypedConstraint** constraints,int numConstraints,const btContactSolverInfo& infoGlobal,btIDebugDraw* debugDrawer,btStackAlloc* stackAlloc);
///clear internal cached data and reset random seed
virtual void reset();
btScalar solveCombinedContactFriction(btRigidBody* body0,btRigidBody* body1, btManifoldPoint& cp, const btContactSolverInfo& info,int iter,btIDebugDraw* debugDrawer); btScalar solveCombinedContactFriction(btRigidBody* body0,btRigidBody* body1, btManifoldPoint& cp, const btContactSolverInfo& info,int iter,btIDebugDraw* debugDrawer);

View File

@@ -940,6 +940,12 @@ void btDiscreteDynamicsWorld::setConstraintSolver(btConstraintSolver* solver)
m_constraintSolver = solver; m_constraintSolver = solver;
} }
btConstraintSolver* btDiscreteDynamicsWorld::getConstraintSolver()
{
return m_constraintSolver;
}
int btDiscreteDynamicsWorld::getNumConstraints() const int btDiscreteDynamicsWorld::getNumConstraints() const
{ {
return int(m_constraints.size()); return int(m_constraints.size());

View File

@@ -139,6 +139,8 @@ public:
void debugDrawObject(const btTransform& worldTransform, const btCollisionShape* shape, const btVector3& color); void debugDrawObject(const btTransform& worldTransform, const btCollisionShape* shape, const btVector3& color);
virtual void setConstraintSolver(btConstraintSolver* solver); virtual void setConstraintSolver(btConstraintSolver* solver);
virtual btConstraintSolver* getConstraintSolver();
virtual int getNumConstraints() const; virtual int getNumConstraints() const;

View File

@@ -65,6 +65,8 @@ class btDynamicsWorld : public btCollisionWorld
virtual void removeRigidBody(btRigidBody* body) = 0; virtual void removeRigidBody(btRigidBody* body) = 0;
virtual void setConstraintSolver(btConstraintSolver* solver) = 0; virtual void setConstraintSolver(btConstraintSolver* solver) = 0;
virtual btConstraintSolver* getConstraintSolver() = 0;
virtual int getNumConstraints() const { return 0; } virtual int getNumConstraints() const { return 0; }

View File

@@ -209,3 +209,8 @@ void btSimpleDynamicsWorld::setConstraintSolver(btConstraintSolver* solver)
m_ownsConstraintSolver = false; m_ownsConstraintSolver = false;
m_constraintSolver = solver; m_constraintSolver = solver;
} }
btConstraintSolver* btSimpleDynamicsWorld::getConstraintSolver()
{
return m_constraintSolver;
}

View File

@@ -77,6 +77,8 @@ public:
virtual void setConstraintSolver(btConstraintSolver* solver); virtual void setConstraintSolver(btConstraintSolver* solver);
virtual btConstraintSolver* getConstraintSolver();
}; };
#endif //BT_SIMPLE_DYNAMICS_WORLD_H #endif //BT_SIMPLE_DYNAMICS_WORLD_H