Blender  V3.3
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 
29 
31 {
39 };
40 
43 {
44 protected:
48 
50 
51 public:
52  btDynamicsWorld(btDispatcher* dispatcher, btBroadphaseInterface* broadphase, btCollisionConfiguration* collisionConfiguration)
53  : btCollisionWorld(dispatcher, broadphase, collisionConfiguration), m_internalTickCallback(0), m_internalPreTickCallback(0), m_worldUserInfo(0)
54  {
55  }
56 
57  virtual ~btDynamicsWorld()
58  {
59  }
60 
65  virtual int stepSimulation(btScalar timeStep, int maxSubSteps = 1, btScalar fixedTimeStep = btScalar(1.) / btScalar(60.)) = 0;
66 
67  virtual void debugDrawWorld() = 0;
68 
69  virtual void addConstraint(btTypedConstraint* constraint, bool disableCollisionsBetweenLinkedBodies = false)
70  {
71  (void)constraint;
72  (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, int group, int 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)
101  {
102  (void)index;
103  return 0;
104  }
105 
106  virtual const btTypedConstraint* getConstraint(int index) const
107  {
108  (void)index;
109  return 0;
110  }
111 
112  virtual btDynamicsWorldType getWorldType() const = 0;
113 
114  virtual void clearForces() = 0;
115 
117  void setInternalTickCallback(btInternalTickCallback cb, void* worldUserInfo = 0, bool isPreTick = false)
118  {
119  if (isPreTick)
120  {
122  }
123  else
124  {
126  }
127  m_worldUserInfo = worldUserInfo;
128  }
129 
130  void setWorldUserInfo(void* worldUserInfo)
131  {
132  m_worldUserInfo = worldUserInfo;
133  }
134 
135  void* getWorldUserInfo() const
136  {
137  return m_worldUserInfo;
138  }
139 
141  {
142  return m_solverInfo;
143  }
144 
146  {
147  return m_solverInfo;
148  }
149 
151  virtual void addVehicle(btActionInterface* vehicle) { (void)vehicle; }
153  virtual void removeVehicle(btActionInterface* vehicle) { (void)vehicle; }
155  virtual void addCharacter(btActionInterface* character) { (void)character; }
157  virtual void removeCharacter(btActionInterface* character) { (void)character; }
158 };
159 
162 {
165 };
166 
169 {
172 };
173 
174 #endif //BT_DYNAMICS_WORLD_H
btDynamicsWorldType
@ BT_SIMPLE_DYNAMICS_WORLD
@ BT_CONTINUOUS_DYNAMICS_WORLD
@ BT_DEFORMABLE_MULTIBODY_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:314
btTypedConstraint(btTypedConstraintType type, btRigidBody &rbA)
btVector3
btVector3 can be used to represent 3D points and vectors. It has an un-used w component to suit 16-by...
Definition: btVector3.h:82
Basic interface to allow actions such as vehicles and characters to be updated inside a btDynamicsWor...
CollisionWorld is interface and container for the collision detection.
The btDynamicsWorld is the interface class for several dynamics implementation, basic,...
virtual void removeRigidBody(btRigidBody *body)=0
virtual btTypedConstraint * getConstraint(int index)
virtual btVector3 getGravity() const =0
virtual const btTypedConstraint * getConstraint(int index) const
virtual void removeAction(btActionInterface *action)=0
virtual void debugDrawWorld()=0
btContactSolverInfo m_solverInfo
virtual void addCharacter(btActionInterface *character)
obsolete, use addAction instead.
virtual int stepSimulation(btScalar timeStep, int maxSubSteps=1, btScalar fixedTimeStep=btScalar(1.)/btScalar(60.))=0
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 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)
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
btContactSolverInfo & getSolverInfo()
const btContactSolverInfo & getSolverInfo() const
void * getWorldUserInfo() const
virtual void synchronizeMotionStates()=0
virtual void setGravity(const btVector3 &gravity)=0
virtual btConstraintSolver * getConstraintSolver()=0
World world
SyclQueue void void size_t num_bytes void
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)
Definition: math_float4.h:513
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