14#ifndef BT_MULTIBODY_INPLACE_SOLVER_ISLAND_CALLBACK_H
15#define BT_MULTIBODY_INPLACE_SOLVER_ISLAND_CALLBACK_H
36 int rIslandId0, lIslandId0;
39 return lIslandId0 < rIslandId0;
49 islandId = islandTagA >= 0 ? islandTagA : islandTagB;
58 int rIslandId0, lIslandId0;
61 return lIslandId0 < rIslandId0;
132 m_solver->
solveMultiBodyGroup(bodies, numBodies, manifolds, numManifolds,
m_sortedConstraints,
m_numConstraints, &
m_multiBodySortedConstraints[0],
m_numConstraints, *
m_solverInfo,
m_debugDrawer,
m_dispatcher);
145 int numCurConstraints = 0;
146 int numCurMultiBodyConstraints = 0;
182 numCurMultiBodyConstraints++;
191 for (i = 0; i < numBodies; i++)
203 for (i = 0; i < numManifolds; i++)
205 for (i = 0; i < numCurConstraints; i++)
208 for (i = 0; i < numCurMultiBodyConstraints; i++)
232 m_solver->
solveMultiBodyGroup(bodies,
m_bodies.
size(), manifold,
m_manifolds.
size(), constraints,
m_constraints.
size(), multiBodyConstraints,
m_multiBodyConstraints.
size(), *
m_solverInfo,
m_debugDrawer,
m_dispatcher);
int btGetConstraintIslandId2(const btTypedConstraint *lhs)
int btGetMultiBodyConstraintIslandId(const btMultiBodyConstraint *lhs)
#define SIMD_FORCE_INLINE
int size() const
return the number of elements in the array
void resize(int newsize, const T &fillData=T())
void clear()
clear the array, deallocated memory. Generally it is better to use array.resize(0),...
void push_back(const T &_Val)
btCollisionObject can be used to manage collision detection objects.
int getInternalType() const
reserved for Bullet internal usage
The btDispatcher interface class can be used in combination with broadphase to dispatch calculations ...
The btIDebugDraw interface class allows hooking up a debug renderer to visually debug simulations.
virtual void solveMultiBodyGroup(btCollisionObject **bodies, int numBodies, btPersistentManifold **manifold, int numManifolds, btTypedConstraint **constraints, int numConstraints, btMultiBodyConstraint **multiBodyConstraints, int numMultiBodyConstraints, const btContactSolverInfo &info, btIDebugDraw *debugDrawer, btDispatcher *dispatcher)
virtual int getIslandIdA() const =0
virtual int getIslandIdB() const =0
btPersistentManifold is a contact point cache, it stays persistent as long as objects are overlapping...
btSolverAnalyticsData m_analyticsData
bool operator()(const btTypedConstraint *lhs, const btTypedConstraint *rhs) const
bool operator()(const btMultiBodyConstraint *lhs, const btMultiBodyConstraint *rhs) const
TypedConstraint is the baseclass for Bullet constraints and vehicles.
const btRigidBody & getRigidBodyA() const
const btRigidBody & getRigidBodyB() const
btAlignedObjectArray< btTypedConstraint * > m_constraints
virtual void processConstraints(int islandId=-1)
virtual void setup(btContactSolverInfo *solverInfo, btTypedConstraint **sortedConstraints, int numConstraints, btMultiBodyConstraint **sortedMultiBodyConstraints, int numMultiBodyConstraints, btIDebugDraw *debugDrawer)
btAlignedObjectArray< btMultiBodyConstraint * > m_multiBodyConstraints
virtual void processIsland(btCollisionObject **bodies, int numBodies, btPersistentManifold **manifolds, int numManifolds, int islandId)
btTypedConstraint ** m_sortedConstraints
btContactSolverInfo * m_solverInfo
btMultiBodyConstraint ** m_multiBodySortedConstraints
void setMultiBodyConstraintSolver(btMultiBodyConstraintSolver *solver)
btAlignedObjectArray< btPersistentManifold * > m_manifolds
btDispatcher * m_dispatcher
btIDebugDraw * m_debugDrawer
MultiBodyInplaceSolverIslandCallback & operator=(const MultiBodyInplaceSolverIslandCallback &other)
btAlignedObjectArray< btCollisionObject * > m_bodies
btAlignedObjectArray< btSolverAnalyticsData > m_islandAnalyticsData
int m_numMultiBodyConstraints
btAlignedObjectArray< btCollisionObject * > m_softBodies
MultiBodyInplaceSolverIslandCallback(btMultiBodyConstraintSolver *solver, btDispatcher *dispatcher)
btMultiBodyConstraintSolver * m_solver