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() {}
///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;
///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.);
}
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);
///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);

View File

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

View File

@@ -140,6 +140,8 @@ public:
virtual void setConstraintSolver(btConstraintSolver* solver);
virtual btConstraintSolver* getConstraintSolver();
virtual int getNumConstraints() const;
virtual btTypedConstraint* getConstraint(int index) ;

View File

@@ -66,6 +66,8 @@ class btDynamicsWorld : public btCollisionWorld
virtual void setConstraintSolver(btConstraintSolver* solver) = 0;
virtual btConstraintSolver* getConstraintSolver() = 0;
virtual int getNumConstraints() const { return 0; }
virtual btTypedConstraint* getConstraint(int index) { (void)index; return 0; }

View File

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

View File

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