Imported Upstream version 2.81
[platform/upstream/libbullet.git] / Demos / FractureDemo / btFractureDynamicsWorld.h
1 #ifndef _BT_FRACTURE_DYNAMICS_WORLD_H\r
2 #define _BT_FRACTURE_DYNAMICS_WORLD_H\r
3 \r
4 #include "BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h"\r
5 #include "LinearMath/btAlignedObjectArray.h"\r
6 \r
7 class btFractureBody;\r
8 class btCompoundShape;\r
9 class btTransform;\r
10 \r
11 \r
12 ///The btFractureDynamicsWorld class enabled basic glue and fracture of objects. \r
13 ///If/once this implementation is stablized/tested we might merge it into btDiscreteDynamicsWorld and remove the class.\r
14 class btFractureDynamicsWorld : public btDiscreteDynamicsWorld\r
15 {\r
16         btAlignedObjectArray<btFractureBody*> m_fractureBodies;\r
17 \r
18         bool    m_fracturingMode;\r
19 \r
20         btFractureBody* addNewBody(const btTransform& oldTransform,btScalar* masses, btCompoundShape* oldCompound);\r
21 \r
22         void    breakDisconnectedParts( btFractureBody* fracObj);\r
23 \r
24 public:\r
25 \r
26         btFractureDynamicsWorld ( btDispatcher* dispatcher,btBroadphaseInterface* pairCache,btConstraintSolver* constraintSolver,btCollisionConfiguration* collisionConfiguration);\r
27 \r
28         virtual void    addRigidBody(btRigidBody* body);\r
29 \r
30         virtual void    removeRigidBody(btRigidBody* body);\r
31 \r
32         void    solveConstraints(btContactSolverInfo& solverInfo);\r
33 \r
34         ///either fracture or glue (!fracture)\r
35         void    setFractureMode(bool fracture)\r
36         {\r
37                 m_fracturingMode = fracture;\r
38         }\r
39 \r
40         bool getFractureMode() const { return m_fracturingMode;}\r
41 \r
42         ///normally those callbacks are called internally by the 'solveConstraints'\r
43         void glueCallback();\r
44 \r
45         ///normally those callbacks are called internally by the 'solveConstraints'\r
46         void fractureCallback();\r
47 \r
48 };\r
49 \r
50 #endif //_BT_FRACTURE_DYNAMICS_WORLD_H\r
51 \r