Bullet Collision Detection & Physics Library
btDynamicsWorld.h
Go to the documentation of this file.
1/*
2Bullet Continuous Collision Detection and Physics Library
3Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
4
5This software is provided 'as-is', without any express or implied warranty.
6In no event will the authors be held liable for any damages arising from the use of this software.
7Permission is granted to anyone to use this software for any purpose,
8including commercial applications, and to alter it and redistribute it freely,
9subject to the following restrictions:
10
111. 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.
122. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
133. 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
25class btDynamicsWorld;
26
27
29typedef void (*btInternalTickCallback)(btDynamicsWorld *world, btScalar timeStep);
30
32{
39};
40
43{
44
45protected:
49
51
52public:
53
54
55 btDynamicsWorld(btDispatcher* dispatcher,btBroadphaseInterface* broadphase,btCollisionConfiguration* collisionConfiguration)
56 :btCollisionWorld(dispatcher,broadphase,collisionConfiguration), m_internalTickCallback(0),m_internalPreTickCallback(0), m_worldUserInfo(0)
57 {
58 }
59
61 {
62 }
63
68 virtual int stepSimulation( btScalar timeStep,int maxSubSteps=1, btScalar fixedTimeStep=btScalar(1.)/btScalar(60.))=0;
69
70 virtual void debugDrawWorld() = 0;
71
72 virtual void addConstraint(btTypedConstraint* constraint, bool disableCollisionsBetweenLinkedBodies=false)
73 {
74 (void)constraint; (void)disableCollisionsBetweenLinkedBodies;
75 }
76
77 virtual void removeConstraint(btTypedConstraint* constraint) {(void)constraint;}
78
79 virtual void addAction(btActionInterface* action) = 0;
80
81 virtual void removeAction(btActionInterface* action) = 0;
82
83 //once a rigidbody is added to the dynamics world, it will get this gravity assigned
84 //existing rigidbodies in the world get gravity assigned too, during this method
85 virtual void setGravity(const btVector3& gravity) = 0;
86 virtual btVector3 getGravity () const = 0;
87
88 virtual void synchronizeMotionStates() = 0;
89
90 virtual void addRigidBody(btRigidBody* body) = 0;
91
92 virtual void addRigidBody(btRigidBody* body, int group, int mask) = 0;
93
94 virtual void removeRigidBody(btRigidBody* body) = 0;
95
96 virtual void setConstraintSolver(btConstraintSolver* solver) = 0;
97
99
100 virtual int getNumConstraints() const { return 0; }
101
102 virtual btTypedConstraint* getConstraint(int index) { (void)index; return 0; }
103
104 virtual const btTypedConstraint* getConstraint(int index) const { (void)index; return 0; }
105
107
108 virtual void clearForces() = 0;
109
111 void setInternalTickCallback(btInternalTickCallback cb, void* worldUserInfo=0,bool isPreTick=false)
112 {
113 if (isPreTick)
114 {
116 } else
117 {
119 }
120 m_worldUserInfo = worldUserInfo;
121 }
122
123 void setWorldUserInfo(void* worldUserInfo)
124 {
125 m_worldUserInfo = worldUserInfo;
126 }
127
128 void* getWorldUserInfo() const
129 {
130 return m_worldUserInfo;
131 }
132
134 {
135 return m_solverInfo;
136 }
137
139 {
140 return m_solverInfo;
141 }
142
143
145 virtual void addVehicle(btActionInterface* vehicle) {(void)vehicle;}
147 virtual void removeVehicle(btActionInterface* vehicle) {(void)vehicle;}
149 virtual void addCharacter(btActionInterface* character) {(void)character;}
151 virtual void removeCharacter(btActionInterface* character) {(void)character;}
152
153
154};
155
158{
161};
162
165{
168};
169
170
171#endif //BT_DYNAMICS_WORLD_H
172
173
btDynamicsWorldType
@ BT_SIMPLE_DYNAMICS_WORLD
@ BT_CONTINUOUS_DYNAMICS_WORLD
@ BT_GPU_DYNAMICS_WORLD
@ BT_SOFT_RIGID_DYNAMICS_WORLD
@ BT_SOFT_MULTIBODY_DYNAMICS_WORLD
@ BT_DISCRETE_DYNAMICS_WORLD
void(* btInternalTickCallback)(btDynamicsWorld *world, btScalar timeStep)
Type for the callback for each tick.
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
Definition: btScalar.h:292
Basic interface to allow actions such as vehicles and characters to be updated inside a btDynamicsWor...
The btBroadphaseInterface class provides an interface to detect aabb-overlapping object pairs.
btCollisionConfiguration allows to configure Bullet collision detection stack allocator size,...
CollisionWorld is interface and container for the collision detection.
The btDispatcher interface class can be used in combination with broadphase to dispatch calculations ...
Definition: btDispatcher.h:76
The btDynamicsWorld is the interface class for several dynamics implementation, basic,...
virtual void removeRigidBody(btRigidBody *body)=0
const btContactSolverInfo & getSolverInfo() const
virtual btConstraintSolver * getConstraintSolver()=0
virtual btVector3 getGravity() const =0
virtual void removeAction(btActionInterface *action)=0
virtual void debugDrawWorld()=0
btContactSolverInfo m_solverInfo
btContactSolverInfo & getSolverInfo()
virtual void addCharacter(btActionInterface *character)
obsolete, use addAction instead.
virtual int stepSimulation(btScalar timeStep, int maxSubSteps=1, btScalar fixedTimeStep=btScalar(1.)/btScalar(60.))=0
stepSimulation proceeds the simulation over 'timeStep', units in preferably in seconds.
virtual void addRigidBody(btRigidBody *body, int group, int mask)=0
virtual int getNumConstraints() const
virtual void setConstraintSolver(btConstraintSolver *solver)=0
void setInternalTickCallback(btInternalTickCallback cb, void *worldUserInfo=0, bool isPreTick=false)
Set the callback for when an internal tick (simulation substep) happens, optional user info.
btInternalTickCallback m_internalTickCallback
btInternalTickCallback m_internalPreTickCallback
virtual ~btDynamicsWorld()
virtual const btTypedConstraint * getConstraint(int index) const
virtual btDynamicsWorldType getWorldType() const =0
virtual void removeConstraint(btTypedConstraint *constraint)
virtual void addRigidBody(btRigidBody *body)=0
virtual void clearForces()=0
virtual void addConstraint(btTypedConstraint *constraint, bool disableCollisionsBetweenLinkedBodies=false)
void * getWorldUserInfo() const
virtual void addVehicle(btActionInterface *vehicle)
obsolete, use addAction instead.
virtual void removeVehicle(btActionInterface *vehicle)
obsolete, use removeAction instead
void setWorldUserInfo(void *worldUserInfo)
virtual void addAction(btActionInterface *action)=0
btDynamicsWorld(btDispatcher *dispatcher, btBroadphaseInterface *broadphase, btCollisionConfiguration *collisionConfiguration)
virtual void removeCharacter(btActionInterface *character)
obsolete, use removeAction instead
virtual btTypedConstraint * getConstraint(int index)
virtual void synchronizeMotionStates()=0
virtual void setGravity(const btVector3 &gravity)=0
The btRigidBody is the main class for rigid body objects.
Definition: btRigidBody.h:63
TypedConstraint is the baseclass for Bullet constraints and vehicles.
btVector3 can be used to represent 3D points and vectors.
Definition: btVector3.h:84
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
btContactSolverInfoDoubleData m_solverInfo
btVector3DoubleData m_gravity
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
btVector3FloatData m_gravity
btContactSolverInfoFloatData m_solverInfo