1 #ifndef BT_REDUCED_DEFORMABLE_BODY_DYNAMICS_WORLD_H
2 #define BT_REDUCED_DEFORMABLE_BODY_DYNAMICS_WORLD_H
4 #include "BulletSoftBody/btDeformableBodySolver.h"
5 #include "btReducedDeformableContactConstraint.h"
7 class btReducedDeformableBody;
9 class btReducedDeformableBodySolver : public btDeformableBodySolver
13 btScalar m_dampingAlpha;
14 btScalar m_dampingBeta;
18 void predictReduceDeformableMotion(btScalar solverdt);
20 void applyExplicitForce(btScalar solverdt);
23 btAlignedObjectArray<btAlignedObjectArray<btReducedDeformableStaticConstraint> > m_staticConstraints;
24 btAlignedObjectArray<btAlignedObjectArray<btReducedDeformableNodeRigidContactConstraint> > m_nodeRigidConstraints;
25 btAlignedObjectArray<btAlignedObjectArray<btReducedDeformableFaceRigidContactConstraint> > m_faceRigidConstraints;
27 btReducedDeformableBodySolver();
28 ~btReducedDeformableBodySolver() {}
30 virtual void setGravity(const btVector3& gravity);
32 virtual SolverTypes getSolverType() const
34 return REDUCED_DEFORMABLE_SOLVER;
37 // resize/clear data structures
38 virtual void reinitialize(const btAlignedObjectArray<btSoftBody*>& bodies, btScalar dt);
40 virtual void predictMotion(btScalar solverdt);
42 virtual void applyTransforms(btScalar timeStep);
44 // set up contact constraints
45 virtual void setConstraints(const btContactSolverInfo& infoGlobal);
47 // solve all constraints (fixed and contact)
48 virtual btScalar solveContactConstraints(btCollisionObject** deformableBodies, int numDeformableBodies, const btContactSolverInfo& infoGlobal);
50 // apply all the delta velocities
51 virtual void deformableBodyInternalWriteBack();
53 // virtual void setProjection() {}
55 // virtual void setLagrangeMultiplier() {}
57 // virtual void setupDeformableSolve(bool implicit);
61 #endif // BT_REDUCED_DEFORMABLE_BODY_DYNAMICS_WORLD_H