Bullet Collision Detection & Physics Library
btDynamicsWorld.h
Go to the documentation of this file.
1 /*
2 Bullet Continuous Collision Detection and Physics Library
3 Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
4 
5 This software is provided 'as-is', without any express or implied warranty.
6 In no event will the authors be held liable for any damages arising from the use of this software.
7 Permission is granted to anyone to use this software for any purpose,
8 including commercial applications, and to alter it and redistribute it freely,
9 subject to the following restrictions:
10 
11 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
12 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
13 3. This notice may not be removed or altered from any source distribution.
14 */
15 
16 #ifndef BT_DYNAMICS_WORLD_H
17 #define BT_DYNAMICS_WORLD_H
18 
21 
22 class btTypedConstraint;
23 class btActionInterface;
24 class btConstraintSolver;
25 class btDynamicsWorld;
26 
27 
29 typedef void (*btInternalTickCallback)(btDynamicsWorld *world, btScalar timeStep);
30 
32 {
37 };
38 
41 {
42 
43 protected:
47 
49 
50 public:
51 
52 
53  btDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* broadphase,btCollisionConfiguration* collisionConfiguration)
54  :btCollisionWorld(dispatcher,broadphase,collisionConfiguration), m_internalTickCallback(0),m_internalPreTickCallback(0), m_worldUserInfo(0)
55  {
56  }
57 
58  virtual ~btDynamicsWorld()
59  {
60  }
61 
66  virtual int stepSimulation( btScalar timeStep,int maxSubSteps=1, btScalar fixedTimeStep=btScalar(1.)/btScalar(60.))=0;
67 
68  virtual void debugDrawWorld() = 0;
69 
70  virtual void addConstraint(btTypedConstraint* constraint, bool disableCollisionsBetweenLinkedBodies=false)
71  {
72  (void)constraint; (void)disableCollisionsBetweenLinkedBodies;
73  }
74 
75  virtual void removeConstraint(btTypedConstraint* constraint) {(void)constraint;}
76 
77  virtual void addAction(btActionInterface* action) = 0;
78 
79  virtual void removeAction(btActionInterface* action) = 0;
80 
81  //once a rigidbody is added to the dynamics world, it will get this gravity assigned
82  //existing rigidbodies in the world get gravity assigned too, during this method
83  virtual void setGravity(const btVector3& gravity) = 0;
84  virtual btVector3 getGravity () const = 0;
85 
86  virtual void synchronizeMotionStates() = 0;
87 
88  virtual void addRigidBody(btRigidBody* body) = 0;
89 
90  virtual void addRigidBody(btRigidBody* body, short group, short mask) = 0;
91 
92  virtual void removeRigidBody(btRigidBody* body) = 0;
93 
94  virtual void setConstraintSolver(btConstraintSolver* solver) = 0;
95 
97 
98  virtual int getNumConstraints() const { return 0; }
99 
100  virtual btTypedConstraint* getConstraint(int index) { (void)index; return 0; }
101 
102  virtual const btTypedConstraint* getConstraint(int index) const { (void)index; return 0; }
103 
104  virtual btDynamicsWorldType getWorldType() const=0;
105 
106  virtual void clearForces() = 0;
107 
109  void setInternalTickCallback(btInternalTickCallback cb, void* worldUserInfo=0,bool isPreTick=false)
110  {
111  if (isPreTick)
112  {
114  } else
115  {
117  }
118  m_worldUserInfo = worldUserInfo;
119  }
120 
121  void setWorldUserInfo(void* worldUserInfo)
122  {
123  m_worldUserInfo = worldUserInfo;
124  }
125 
126  void* getWorldUserInfo() const
127  {
128  return m_worldUserInfo;
129  }
130 
132  {
133  return m_solverInfo;
134  }
135 
136 
138  virtual void addVehicle(btActionInterface* vehicle) {(void)vehicle;}
140  virtual void removeVehicle(btActionInterface* vehicle) {(void)vehicle;}
142  virtual void addCharacter(btActionInterface* character) {(void)character;}
144  virtual void removeCharacter(btActionInterface* character) {(void)character;}
145 
146 
147 };
148 
151 {
154 };
155 
158 {
161 };
162 
163 
164 #endif //BT_DYNAMICS_WORLD_H
165 
166