[dali_2.3.21] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-physics / third-party / bullet3 / src / BulletSoftBody / BulletReducedDeformableBody / btReducedDeformableBodySolver.h
1 #ifndef BT_REDUCED_DEFORMABLE_BODY_DYNAMICS_WORLD_H
2 #define BT_REDUCED_DEFORMABLE_BODY_DYNAMICS_WORLD_H
3
4 #include "BulletSoftBody/btDeformableBodySolver.h"
5 #include "btReducedDeformableContactConstraint.h"
6
7 class btReducedDeformableBody;
8
9 class btReducedDeformableBodySolver : public btDeformableBodySolver
10 {
11  protected:
12   bool m_ascendOrder;
13   btScalar m_dampingAlpha;
14   btScalar m_dampingBeta;
15
16   btVector3 m_gravity;
17
18   void predictReduceDeformableMotion(btScalar solverdt);
19
20   void applyExplicitForce(btScalar solverdt);
21
22  public:
23   btAlignedObjectArray<btAlignedObjectArray<btReducedDeformableStaticConstraint> > m_staticConstraints;
24   btAlignedObjectArray<btAlignedObjectArray<btReducedDeformableNodeRigidContactConstraint> > m_nodeRigidConstraints;
25   btAlignedObjectArray<btAlignedObjectArray<btReducedDeformableFaceRigidContactConstraint> > m_faceRigidConstraints;
26   
27   btReducedDeformableBodySolver();
28   ~btReducedDeformableBodySolver() {}
29
30   virtual void setGravity(const btVector3& gravity);
31
32   virtual SolverTypes getSolverType() const
33   {
34     return REDUCED_DEFORMABLE_SOLVER;
35   }
36
37   // resize/clear data structures
38         virtual void reinitialize(const btAlignedObjectArray<btSoftBody*>& bodies, btScalar dt);
39
40   virtual void predictMotion(btScalar solverdt);
41
42   virtual void applyTransforms(btScalar timeStep);
43
44   // set up contact constraints
45         virtual void setConstraints(const btContactSolverInfo& infoGlobal);
46
47   // solve all constraints (fixed and contact)
48   virtual btScalar solveContactConstraints(btCollisionObject** deformableBodies, int numDeformableBodies, const btContactSolverInfo& infoGlobal);
49
50   // apply all the delta velocities
51   virtual void deformableBodyInternalWriteBack();
52
53   // virtual void setProjection() {}
54
55   // virtual void setLagrangeMultiplier() {}
56
57   // virtual void setupDeformableSolve(bool implicit);
58
59 };
60
61 #endif // BT_REDUCED_DEFORMABLE_BODY_DYNAMICS_WORLD_H