16 #ifndef BT_SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_H 17 #define BT_SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_H 62 void setupSolverFunctions(
bool useSimd);
66 void setupFrictionConstraint(
btSolverConstraint & solverConstraint,
const btVector3& normalAxis,
int solverBodyIdA,
int solverBodyIdB,
72 void setupTorsionalFrictionConstraint(
btSolverConstraint & solverConstraint,
const btVector3& normalAxis,
int solverBodyIdA,
int solverBodyIdB,
77 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.);
78 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,
104 return m_resolveSplitPenetrationImpulse(bodyA, bodyB, contactConstraint);
109 return m_resolveSplitPenetrationImpulse(bodyA, bodyB, contactConstraint);
122 return m_resolveSplitPenetrationImpulse(bodyA, bodyB, contactConstraint);
145 virtual void reset();
147 unsigned long btRand2();
149 int btRandInt2(
int n);
167 return m_resolveSingleConstraintRowGeneric;
171 m_resolveSingleConstraintRowGeneric = rowSolver;
175 return m_resolveSingleConstraintRowLowerLimit;
179 m_resolveSingleConstraintRowLowerLimit = rowSolver;
193 #endif //BT_SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_H
unsigned long getRandSeed() const
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()
virtual btConstraintSolverType getSolverType() const
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
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)
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