summaryrefslogtreecommitdiff
path: root/src/BulletSoftBody/btDeformableRigidDynamicsWorld.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/BulletSoftBody/btDeformableRigidDynamicsWorld.h')
-rw-r--r--src/BulletSoftBody/btDeformableRigidDynamicsWorld.h67
1 files changed, 57 insertions, 10 deletions
diff --git a/src/BulletSoftBody/btDeformableRigidDynamicsWorld.h b/src/BulletSoftBody/btDeformableRigidDynamicsWorld.h
index 11ad969a2..ca1fff885 100644
--- a/src/BulletSoftBody/btDeformableRigidDynamicsWorld.h
+++ b/src/BulletSoftBody/btDeformableRigidDynamicsWorld.h
@@ -16,50 +16,76 @@
#ifndef BT_DEFORMABLE_RIGID_DYNAMICS_WORLD_H
#define BT_DEFORMABLE_RIGID_DYNAMICS_WORLD_H
-#include "btSoftRigidDynamicsWorld.h"
+#include "btSoftMultiBodyDynamicsWorld.h"
#include "btLagrangianForce.h"
#include "btMassSpring.h"
#include "btDeformableBodySolver.h"
+#include "btSoftBodyHelpers.h"
+
typedef btAlignedObjectArray<btSoftBody*> btSoftBodyArray;
class btDeformableBodySolver;
class btLagrangianForce;
+typedef btAlignedObjectArray<btSoftBody*> btSoftBodyArray;
-class btDeformableRigidDynamicsWorld : public btSoftRigidDynamicsWorld
+class btDeformableRigidDynamicsWorld : public btMultiBodyDynamicsWorld
{
using TVStack = btAlignedObjectArray<btVector3>;
///Solver classes that encapsulate multiple deformable bodies for solving
btDeformableBodySolver* m_deformableBodySolver;
-
+ btSoftBodyArray m_softBodies;
+ int m_drawFlags;
+ bool m_drawNodeTree;
+ bool m_drawFaceTree;
+ bool m_drawClusterTree;
+ btSoftBodyWorldInfo m_sbi;
+ bool m_ownsSolver;
+
protected:
virtual void internalSingleStepSimulation(btScalar timeStep);
void solveDeformableBodiesConstraints(btScalar timeStep);
public:
- btDeformableRigidDynamicsWorld(btDispatcher* dispatcher, btBroadphaseInterface* pairCache, btConstraintSolver* constraintSolver, btCollisionConfiguration* collisionConfiguration, btDeformableBodySolver* deformableBodySolver = 0)
- : btSoftRigidDynamicsWorld(dispatcher, pairCache, constraintSolver, collisionConfiguration, 0),
+ btDeformableRigidDynamicsWorld(btDispatcher* dispatcher, btBroadphaseInterface* pairCache, btMultiBodyConstraintSolver* constraintSolver, btCollisionConfiguration* collisionConfiguration, btDeformableBodySolver* deformableBodySolver = 0)
+ : btMultiBodyDynamicsWorld(dispatcher, pairCache, constraintSolver, collisionConfiguration),
m_deformableBodySolver(deformableBodySolver)
{
+ m_drawFlags = fDrawFlags::Std;
+ m_drawNodeTree = true;
+ m_drawFaceTree = false;
+ m_drawClusterTree = false;
+ m_sbi.m_broadphase = pairCache;
+ m_sbi.m_dispatcher = dispatcher;
+ m_sbi.m_sparsesdf.Initialize();
+ m_sbi.m_sparsesdf.Reset();
+
+ m_sbi.air_density = (btScalar)1.2;
+ m_sbi.water_density = 0;
+ m_sbi.water_offset = 0;
+ m_sbi.water_normal = btVector3(0, 0, 0);
+ m_sbi.m_gravity.setValue(0, -10, 0);
+
+ m_sbi.m_sparsesdf.Initialize();
}
virtual ~btDeformableRigidDynamicsWorld()
{
}
- virtual btSoftRigidDynamicsWorld* getSoftDynamicsWorld()
+ virtual btMultiBodyDynamicsWorld* getMultiBodyDynamicsWorld()
{
- return (btSoftRigidDynamicsWorld*)(this);
+ return (btMultiBodyDynamicsWorld*)(this);
}
- virtual const btSoftRigidDynamicsWorld* getSoftDynamicsWorld() const
+ virtual const btMultiBodyDynamicsWorld* getMultiBodyDynamicsWorld() const
{
- return (const btSoftRigidDynamicsWorld*)(this);
+ return (const btMultiBodyDynamicsWorld*)(this);
}
virtual btDynamicsWorldType getWorldType() const
{
- return BT_DEFORMABLE_RIGID_DYNAMICS_WORLD;
+ return BT_DEFORMABLE_MULTIBODY_DYNAMICS_WORLD;
}
virtual void predictUnconstraintMotion(btScalar timeStep);
@@ -68,6 +94,27 @@ public:
// virtual void solveDeformableBodiesConstraints(btScalar timeStep);
virtual void addSoftBody(btSoftBody* body, int collisionFilterGroup = btBroadphaseProxy::DefaultFilter, int collisionFilterMask = btBroadphaseProxy::AllFilter);
+
+ btSoftBodyArray& getSoftBodyArray()
+ {
+ return m_softBodies;
+ }
+
+ const btSoftBodyArray& getSoftBodyArray() const
+ {
+ return m_softBodies;
+ }
+
+ btSoftBodyWorldInfo& getWorldInfo()
+ {
+ return m_sbi;
+ }
+ const btSoftBodyWorldInfo& getWorldInfo() const
+ {
+ return m_sbi;
+ }
+ int getDrawFlags() const { return (m_drawFlags); }
+ void setDrawFlags(int f) { m_drawFlags = f; }
};
#endif //BT_DEFORMABLE_RIGID_DYNAMICS_WORLD_H