Blender  V3.3
DeformableBodyInplaceSolverIslandCallback.h
Go to the documentation of this file.
1 //
2 // DeformableBodyInplaceSolverIslandCallback.h
3 // BulletSoftBody
4 //
5 // Created by Xuchen Han on 12/16/19.
6 //
7 
8 #ifndef DeformableBodyInplaceSolverIslandCallback_h
9 #define DeformableBodyInplaceSolverIslandCallback_h
10 
12 {
13  btDeformableMultiBodyConstraintSolver* m_deformableSolver;
14 
15  DeformableBodyInplaceSolverIslandCallback(btDeformableMultiBodyConstraintSolver* solver,
16  btDispatcher* dispatcher)
17  : MultiBodyInplaceSolverIslandCallback(solver, dispatcher), m_deformableSolver(solver)
18  {
19  }
20 
21  virtual void processConstraints(int islandId = -1)
22  {
23  btCollisionObject** bodies = m_bodies.size() ? &m_bodies[0] : 0;
24  btCollisionObject** softBodies = m_softBodies.size() ? &m_softBodies[0] : 0;
25  btPersistentManifold** manifold = m_manifolds.size() ? &m_manifolds[0] : 0;
27  btMultiBodyConstraint** multiBodyConstraints = m_multiBodyConstraints.size() ? &m_multiBodyConstraints[0] : 0;
28 
29  //printf("mb contacts = %d, mb constraints = %d\n", mbContacts, m_multiBodyConstraints.size());
30 
31  m_deformableSolver->solveDeformableBodyGroup(bodies, m_bodies.size(), softBodies, m_softBodies.size(), manifold, m_manifolds.size(), constraints, m_constraints.size(), multiBodyConstraints, m_multiBodyConstraints.size(), *m_solverInfo, m_debugDrawer, m_dispatcher);
33  {
34  m_deformableSolver->m_analyticsData.m_islandId = islandId;
35  m_islandAnalyticsData.push_back(m_solver->m_analyticsData);
36  }
37  m_bodies.resize(0);
42  }
43 };
44 
45 #endif /* DeformableBodyInplaceSolverIslandCallback_h */
btCollisionObject
btMultiBodyConstraint
btPersistentManifold()
btSequentialImpulseConstraintSolverMt int btPersistentManifold int btTypedConstraint ** constraints
btTypedConstraint(btTypedConstraintType type, btRigidBody &rbA)
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)
DeformableBodyInplaceSolverIslandCallback(btDeformableMultiBodyConstraintSolver *solver, btDispatcher *dispatcher)
btAlignedObjectArray< btTypedConstraint * > m_constraints
btAlignedObjectArray< btMultiBodyConstraint * > m_multiBodyConstraints
btAlignedObjectArray< btPersistentManifold * > m_manifolds
btAlignedObjectArray< btCollisionObject * > m_bodies
btAlignedObjectArray< btSolverAnalyticsData > m_islandAnalyticsData
btAlignedObjectArray< btCollisionObject * > m_softBodies