123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #ifndef _BT_FRACTURE_DYNAMICS_WORLD_H
- #define _BT_FRACTURE_DYNAMICS_WORLD_H
- #include "BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h"
- #include "LinearMath/btAlignedObjectArray.h"
- class btFractureBody;
- class btCompoundShape;
- class btTransform;
- ///The btFractureDynamicsWorld class enabled basic glue and fracture of objects.
- ///If/once this implementation is stablized/tested we might merge it into btDiscreteDynamicsWorld and remove the class.
- class btFractureDynamicsWorld : public btDiscreteDynamicsWorld
- {
- btAlignedObjectArray<btFractureBody*> m_fractureBodies;
- bool m_fracturingMode;
- btFractureBody* addNewBody(const btTransform& oldTransform,btScalar* masses, btCompoundShape* oldCompound);
- void breakDisconnectedParts( btFractureBody* fracObj);
- public:
- btFractureDynamicsWorld ( btDispatcher* dispatcher,btBroadphaseInterface* pairCache,btConstraintSolver* constraintSolver,btCollisionConfiguration* collisionConfiguration);
- virtual void addRigidBody(btRigidBody* body);
- virtual void removeRigidBody(btRigidBody* body);
- void solveConstraints(btContactSolverInfo& solverInfo);
- ///either fracture or glue (!fracture)
- void setFractureMode(bool fracture)
- {
- m_fracturingMode = fracture;
- }
- bool getFractureMode() const { return m_fracturingMode;}
- ///normally those callbacks are called internally by the 'solveConstraints'
- void glueCallback();
- ///normally those callbacks are called internally by the 'solveConstraints'
- void fractureCallback();
- };
- #endif //_BT_FRACTURE_DYNAMICS_WORLD_H
|