summaryrefslogtreecommitdiff
path: root/src/BulletSoftBody/BulletReducedDeformableBody/btReducedDeformableBodySolver.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/BulletSoftBody/BulletReducedDeformableBody/btReducedDeformableBodySolver.h')
-rw-r--r--src/BulletSoftBody/BulletReducedDeformableBody/btReducedDeformableBodySolver.h61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/BulletSoftBody/BulletReducedDeformableBody/btReducedDeformableBodySolver.h b/src/BulletSoftBody/BulletReducedDeformableBody/btReducedDeformableBodySolver.h
new file mode 100644
index 000000000..04c171f31
--- /dev/null
+++ b/src/BulletSoftBody/BulletReducedDeformableBody/btReducedDeformableBodySolver.h
@@ -0,0 +1,61 @@
+#ifndef BT_REDUCED_DEFORMABLE_BODY_DYNAMICS_WORLD_H
+#define BT_REDUCED_DEFORMABLE_BODY_DYNAMICS_WORLD_H
+
+#include "BulletSoftBody/btDeformableBodySolver.h"
+#include "btReducedDeformableContactConstraint.h"
+
+class btReducedDeformableBody;
+
+class btReducedDeformableBodySolver : public btDeformableBodySolver
+{
+ protected:
+ bool m_ascendOrder;
+ btScalar m_dampingAlpha;
+ btScalar m_dampingBeta;
+
+ btVector3 m_gravity;
+
+ void predictReduceDeformableMotion(btScalar solverdt);
+
+ void applyExplicitForce(btScalar solverdt);
+
+ public:
+ btAlignedObjectArray<btAlignedObjectArray<btReducedDeformableStaticConstraint> > m_staticConstraints;
+ btAlignedObjectArray<btAlignedObjectArray<btReducedDeformableNodeRigidContactConstraint> > m_nodeRigidConstraints;
+ btAlignedObjectArray<btAlignedObjectArray<btReducedDeformableFaceRigidContactConstraint> > m_faceRigidConstraints;
+
+ btReducedDeformableBodySolver();
+ ~btReducedDeformableBodySolver() {}
+
+ virtual void setGravity(const btVector3& gravity);
+
+ virtual SolverTypes getSolverType() const
+ {
+ return REDUCED_DEFORMABLE_SOLVER;
+ }
+
+ // resize/clear data structures
+ virtual void reinitialize(const btAlignedObjectArray<btSoftBody*>& bodies, btScalar dt);
+
+ virtual void predictMotion(btScalar solverdt);
+
+ virtual void applyTransforms(btScalar timeStep);
+
+ // set up contact constraints
+ virtual void setConstraints(const btContactSolverInfo& infoGlobal);
+
+ // solve all constraints (fixed and contact)
+ virtual btScalar solveContactConstraints(btCollisionObject** deformableBodies, int numDeformableBodies, const btContactSolverInfo& infoGlobal);
+
+ // apply all the delta velocities
+ virtual void deformableBodyInternalWriteBack();
+
+ // virtual void setProjection() {}
+
+ // virtual void setLagrangeMultiplier() {}
+
+ // virtual void setupDeformableSolve(bool implicit);
+
+};
+
+#endif // BT_REDUCED_DEFORMABLE_BODY_DYNAMICS_WORLD_H \ No newline at end of file