Add support for picking deformable with mouse

This commit is contained in:
Xuchen Han
2020-03-09 11:19:08 -07:00
parent 41ca8b9e59
commit 7dfef92267
21 changed files with 494 additions and 273 deletions

View File

@@ -22,7 +22,7 @@
#include "BulletDynamics/Featherstone/btMultiBodyConstraintSolver.h"
#include <stdio.h> //printf debugging
#include "../CommonInterfaces/CommonRigidBodyBase.h"
#include "../CommonInterfaces/CommonDeformableBodyBase.h"
#include "../Utils/b3ResourcePath.h"
///The Pinch shows the frictional contact between kinematic rigid objects with deformable objects
@@ -32,12 +32,11 @@ struct TetraCube
#include "../SoftDemo/cube.inl"
};
class Pinch : public CommonRigidBodyBase
class Pinch : public CommonDeformableBodyBase
{
btAlignedObjectArray<btDeformableLagrangianForce*> m_forces;
public:
Pinch(struct GUIHelperInterface* helper)
: CommonRigidBodyBase(helper)
: CommonDeformableBodyBase(helper)
{
}
virtual ~Pinch()
@@ -81,19 +80,9 @@ public:
}
}
virtual const btDeformableMultiBodyDynamicsWorld* getDeformableDynamicsWorld() const
{
return (btDeformableMultiBodyDynamicsWorld*)m_dynamicsWorld;
}
virtual btDeformableMultiBodyDynamicsWorld* getDeformableDynamicsWorld()
{
return (btDeformableMultiBodyDynamicsWorld*)m_dynamicsWorld;
}
virtual void renderScene()
{
CommonRigidBodyBase::renderScene();
CommonDeformableBodyBase::renderScene();
btDeformableMultiBodyDynamicsWorld* deformableWorld = getDeformableDynamicsWorld();
for (int i = 0; i < deformableWorld->getSoftBodyArray().size(); i++)
@@ -337,7 +326,7 @@ void Pinch::initPhysics()
void Pinch::exitPhysics()
{
//cleanup in the reverse order of creation/initialization
removePickingConstraint();
//remove the rigidbodies from the dynamics world and delete them
int i;
for (i = m_dynamicsWorld->getNumCollisionObjects() - 1; i >= 0; i--)