added 'getConstraintSolver' and ability to 'reset' (set randseeds back to zero, and clear internal caches)
This commit is contained in:
@@ -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;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1156,3 +1156,10 @@ btScalar btSequentialImpulseConstraintSolver::solveFriction(btRigidBody* body0,b
|
|||||||
}
|
}
|
||||||
return btScalar(0.);
|
return btScalar(0.);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void btSequentialImpulseConstraintSolver::reset()
|
||||||
|
{
|
||||||
|
m_btSeed2 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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; }
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user