16 #ifndef BT_SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_H 17 #define BT_SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_H 61 void setupSolverFunctions(
bool useSimd );
65 void setupFrictionConstraint(
btSolverConstraint& solverConstraint,
const btVector3& normalAxis,
int solverBodyIdA,
int solverBodyIdB,
71 void setupTorsionalFrictionConstraint(
btSolverConstraint& solverConstraint,
const btVector3& normalAxis,
int solverBodyIdA,
int solverBodyIdB,
76 btSolverConstraint& addFrictionConstraint(
const btVector3& normalAxis,
int solverBodyIdA,
int solverBodyIdB,
int frictionIndex,
btManifoldPoint& cp,
const btVector3& rel_pos1,
const btVector3& rel_pos2,
btCollisionObject* colObj0,
btCollisionObject* colObj1,
btScalar relaxation,
const btContactSolverInfo& infoGlobal,
btScalar desiredVelocity=0.,
btScalar cfmSlip=0.);
77 btSolverConstraint& addTorsionalFrictionConstraint(
const btVector3& normalAxis,
int solverBodyIdA,
int solverBodyIdB,
int frictionIndex,
btManifoldPoint& cp,
btScalar torsionalFriction,
const btVector3& rel_pos1,
const btVector3& rel_pos2,
btCollisionObject* colObj0,
btCollisionObject* colObj1,
btScalar relaxation,
btScalar desiredVelocity=0,
btScalar cfmSlip=0.f);
85 void setFrictionConstraintImpulse(
btSolverConstraint& solverConstraint,
int solverBodyIdA,
int solverBodyIdB,
105 return m_resolveSplitPenetrationImpulse( bodyA, bodyB, contactConstraint );
110 return m_resolveSplitPenetrationImpulse( bodyA, bodyB, contactConstraint );
123 return m_resolveSplitPenetrationImpulse( bodyA, bodyB, contactConstraint );
149 virtual void reset();
151 unsigned long btRand2();
153 int btRandInt2 (
int n);
172 return m_resolveSingleConstraintRowGeneric;
176 m_resolveSingleConstraintRowGeneric = rowSolver;
180 return m_resolveSingleConstraintRowLowerLimit;
184 m_resolveSingleConstraintRowLowerLimit = rowSolver;
201 #endif //BT_SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_H
btPersistentManifold is a contact point cache, it stays persistent as long as objects are overlapping...
btConstraintArray m_tmpSolverContactFrictionConstraintPool
btConstraintArray m_tmpSolverContactRollingFrictionConstraintPool
btConstraintSolverType
btConstraintSolver provides solver interface
void setConstraintRowSolverGeneric(btSingleConstraintRowSolver rowSolver)
1D constraint along a normal axis between bodyA and bodyB. It can be combined to solve contact and fr...
btSingleConstraintRowSolver m_resolveSingleConstraintRowGeneric
ManifoldContactPoint collects and maintains persistent contactpoints.
btAlignedObjectArray< int > m_orderTmpConstraintPool
btSingleConstraintRowSolver getActiveConstraintRowSolverLowerLimit()
btAlignedObjectArray< btSolverBody > m_tmpSolverBodyPool
btScalar(* btSingleConstraintRowSolver)(btSolverBody &, btSolverBody &, const btSolverConstraint &)
btScalar resolveSplitPenetrationSIMD(btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
btConstraintArray m_tmpSolverContactConstraintPool
btCollisionObject can be used to manage collision detection objects.
The btIDebugDraw interface class allows hooking up a debug renderer to visually debug simulations...
int m_maxOverrideNumSolverIterations
unsigned long getRandSeed() const
The btSequentialImpulseConstraintSolver is a fast SIMD implementation of the Projected Gauss Seidel (...
btVector3 can be used to represent 3D points and vectors.
#define ATTRIBUTE_ALIGNED16(a)
btScalar resolveSplitPenetrationImpulse(btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
virtual btConstraintSolverType getSolverType() const
The btSolverBody is an internal datastructure for the constraint solver. Only necessary data is packe...
btAlignedObjectArray< btTypedConstraint::btConstraintInfo1 > m_tmpConstraintSizesPool
TypedConstraint is the baseclass for Bullet constraints and vehicles.
#define BT_DECLARE_ALIGNED_ALLOCATOR()
btAlignedObjectArray< int > m_orderFrictionConstraintPool
btAlignedObjectArray< int > m_orderNonContactConstraintPool
unsigned long m_btSeed2
m_btSeed2 is used for re-arranging the constraint rows. improves convergence/quality of friction ...
btScalar resolveSplitPenetrationImpulseCacheFriendly(btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
The btDispatcher interface class can be used in combination with broadphase to dispatch calculations ...
btSingleConstraintRowSolver getActiveConstraintRowSolverGeneric()
btSingleConstraintRowSolver m_resolveSingleConstraintRowLowerLimit
btConstraintArray m_tmpSolverNonContactConstraintPool
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
void setConstraintRowSolverLowerLimit(btSingleConstraintRowSolver rowSolver)
btAlignedObjectArray< int > m_kinematicBodyUniqueIdToSolverBodyTable
void setRandSeed(unsigned long seed)
btSingleConstraintRowSolver m_resolveSplitPenetrationImpulse
btScalar m_leastSquaresResidual