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,
101 return m_resolveSplitPenetrationImpulse( bodyA, bodyB, contactConstraint );
106 return m_resolveSplitPenetrationImpulse( bodyA, bodyB, contactConstraint );
119 return m_resolveSplitPenetrationImpulse( bodyA, bodyB, contactConstraint );
143 virtual void reset();
145 unsigned long btRand2();
147 int btRandInt2 (
int n);
166 return m_resolveSingleConstraintRowGeneric;
170 m_resolveSingleConstraintRowGeneric = rowSolver;
174 return m_resolveSingleConstraintRowLowerLimit;
178 m_resolveSingleConstraintRowLowerLimit = rowSolver;
195 #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
btSimdScalar resolveSplitPenetrationSIMD(btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
#define btSimdScalar
Until we get other contributions, only use SIMD on Windows, when using Visual Studio 2008 or later...
btAlignedObjectArray< btSolverBody > m_tmpSolverBodyPool
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)
btSimdScalar 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 ...
btSimdScalar 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)
btSimdScalar(* btSingleConstraintRowSolver)(btSolverBody &, btSolverBody &, const btSolverConstraint &)
btSingleConstraintRowSolver m_resolveSplitPenetrationImpulse
btScalar m_leastSquaresResidual