14 #ifndef BT_MULTIBODY_INPLACE_SOLVER_ISLAND_CALLBACK_H
15 #define BT_MULTIBODY_INPLACE_SOLVER_ISLAND_CALLBACK_H
28 islandId = rcolObj0.getIslandTag() >= 0 ? rcolObj0.getIslandTag() : rcolObj1.getIslandTag();
36 int rIslandId0, lIslandId0;
39 return lIslandId0 < rIslandId0;
47 int islandTagA = lhs->getIslandIdA();
48 int islandTagB = lhs->getIslandIdB();
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);
135 m_solver->m_analyticsData.m_islandId = islandId;
145 int numCurConstraints = 0;
146 int numCurMultiBodyConstraints = 0;
182 numCurMultiBodyConstraints++;
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);
235 m_solver->m_analyticsData.m_islandId = islandId;
SIMD_FORCE_INLINE int btGetMultiBodyConstraintIslandId(const btMultiBodyConstraint *lhs)
SIMD_FORCE_INLINE int btGetConstraintIslandId2(const btTypedConstraint *lhs)
#define SIMD_FORCE_INLINE
btSequentialImpulseConstraintSolverMt int btPersistentManifold int btTypedConstraint ** constraints
btSequentialImpulseConstraintSolverMt int btPersistentManifold int btTypedConstraint int numConstraints
btSequentialImpulseConstraintSolverMt int numBodies
btSequentialImpulseConstraintSolverMt int btPersistentManifold int numManifolds
btTypedConstraint(btTypedConstraintType type, btRigidBody &rbA)
SIMD_FORCE_INLINE void clear()
clear the array, deallocated memory. Generally it is better to use array.resize(0),...
SIMD_FORCE_INLINE int size() const
return the number of elements in the array
SIMD_FORCE_INLINE void resize(int newsize, const T &fillData=T())
SIMD_FORCE_INLINE void push_back(const T &_Val)
bool operator()(const btTypedConstraint *lhs, const btTypedConstraint *rhs) const
bool operator()(const btMultiBodyConstraint *lhs, const btMultiBodyConstraint *rhs) const
SyclQueue void void size_t num_bytes void
btAlignedObjectArray< btTypedConstraint * > m_constraints
virtual void processConstraints(int islandId=-1)
btAlignedObjectArray< btMultiBodyConstraint * > m_multiBodyConstraints
virtual void processIsland(btCollisionObject **bodies, int numBodies, btPersistentManifold **manifolds, int numManifolds, int islandId)
MultiBodyInplaceSolverIslandCallback & operator=(const MultiBodyInplaceSolverIslandCallback &other)
virtual SIMD_FORCE_INLINE void setup(btContactSolverInfo *solverInfo, btTypedConstraint **sortedConstraints, int numConstraints, btMultiBodyConstraint **sortedMultiBodyConstraints, int numMultiBodyConstraints, btIDebugDraw *debugDrawer)
btTypedConstraint ** m_sortedConstraints
btContactSolverInfo * m_solverInfo
btMultiBodyConstraint ** m_multiBodySortedConstraints
void setMultiBodyConstraintSolver(btMultiBodyConstraintSolver *solver)
btAlignedObjectArray< btPersistentManifold * > m_manifolds
btDispatcher * m_dispatcher
btIDebugDraw * m_debugDrawer
btAlignedObjectArray< btCollisionObject * > m_bodies
btAlignedObjectArray< btSolverAnalyticsData > m_islandAnalyticsData
int m_numMultiBodyConstraints
btAlignedObjectArray< btCollisionObject * > m_softBodies
MultiBodyInplaceSolverIslandCallback(btMultiBodyConstraintSolver *solver, btDispatcher *dispatcher)
btMultiBodyConstraintSolver * m_solver