Bullet Collision Detection & Physics Library
btRigidBody.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_RIGIDBODY_H
17 #define BT_RIGIDBODY_H
18 
20 #include "LinearMath/btTransform.h"
23 
24 class btCollisionShape;
25 class btMotionState;
26 class btTypedConstraint;
27 
29 extern bool gDisableDeactivation;
30 
31 #ifdef BT_USE_DOUBLE_PRECISION
32 #define btRigidBodyData btRigidBodyDoubleData
33 #define btRigidBodyDataName "btRigidBodyDoubleData"
34 #else
35 #define btRigidBodyData btRigidBodyFloatData
36 #define btRigidBodyDataName "btRigidBodyFloatData"
37 #endif //BT_USE_DOUBLE_PRECISION
38 
40 {
49 };
50 
60 {
66 
72 
75 
81 
84 
85  //m_optionalMotionState allows to automatic synchronize the world transform for active objects
87 
88  //keep track of typed constraints referencing this rigid body, to disable collision between linked bodies
90 
92 
94 
95 protected:
102 
103 public:
110  {
112 
117 
122 
128  btScalar m_spinningFriction; //torsional friction around contact normal
129 
132 
135 
136  //Additional damping can help avoiding lowpass jitter motion, help stability for ragdolls etc.
137  //Such damping is undesirable, so once the overall simulation quality of the rigid body dynamics system has improved, this should become obsolete
143 
144  btRigidBodyConstructionInfo(btScalar mass, btMotionState* motionState, btCollisionShape* collisionShape, const btVector3& localInertia = btVector3(0, 0, 0)) : m_mass(mass),
145  m_motionState(motionState),
146  m_collisionShape(collisionShape),
147  m_localInertia(localInertia),
150  m_friction(btScalar(0.5)),
153  m_restitution(btScalar(0.)),
156  m_additionalDamping(false),
161  {
163  }
164  };
165 
167  btRigidBody(const btRigidBodyConstructionInfo& constructionInfo);
168 
171  btRigidBody(btScalar mass, btMotionState* motionState, btCollisionShape* collisionShape, const btVector3& localInertia = btVector3(0, 0, 0));
172 
173  virtual ~btRigidBody()
174  {
175  //No constraints should point to this rigidbody
176  //Remove constraints from the dynamics world before you delete the related rigidbodies.
178  }
179 
180 protected:
182  void setupRigidBody(const btRigidBodyConstructionInfo& constructionInfo);
183 
184 public:
185  void proceedToTransform(const btTransform& newTrans);
186 
189  static const btRigidBody* upcast(const btCollisionObject* colObj)
190  {
192  return (const btRigidBody*)colObj;
193  return 0;
194  }
196  {
198  return (btRigidBody*)colObj;
199  return 0;
200  }
201 
203  void predictIntegratedTransform(btScalar step, btTransform& predictedTransform);
204 
205  void saveKinematicState(btScalar step);
206 
207  void applyGravity();
208 
209  void setGravity(const btVector3& acceleration);
210 
211  const btVector3& getGravity() const
212  {
213  return m_gravity_acceleration;
214  }
215 
216  void setDamping(btScalar lin_damping, btScalar ang_damping);
217 
219  {
220  return m_linearDamping;
221  }
222 
224  {
225  return m_angularDamping;
226  }
227 
229  {
231  }
232 
234  {
236  }
237 
238  void applyDamping(btScalar timeStep);
239 
241  {
242  return m_collisionShape;
243  }
244 
246  {
247  return m_collisionShape;
248  }
249 
250  void setMassProps(btScalar mass, const btVector3& inertia);
251 
252  const btVector3& getLinearFactor() const
253  {
254  return m_linearFactor;
255  }
256  void setLinearFactor(const btVector3& linearFactor)
257  {
258  m_linearFactor = linearFactor;
260  }
261  btScalar getInvMass() const { return m_inverseMass; }
263  {
265  }
266 
267  void integrateVelocities(btScalar step);
268 
269  void setCenterOfMassTransform(const btTransform& xform);
270 
271  void applyCentralForce(const btVector3& force)
272  {
273  m_totalForce += force * m_linearFactor;
274  }
275 
276  const btVector3& getTotalForce() const
277  {
278  return m_totalForce;
279  };
280 
281  const btVector3& getTotalTorque() const
282  {
283  return m_totalTorque;
284  };
285 
287  {
288  return m_invInertiaLocal;
289  };
290 
291  void setInvInertiaDiagLocal(const btVector3& diagInvInertia)
292  {
293  m_invInertiaLocal = diagInvInertia;
294  }
295 
297  {
298  m_linearSleepingThreshold = linear;
299  m_angularSleepingThreshold = angular;
300  }
301 
302  void applyTorque(const btVector3& torque)
303  {
304  m_totalTorque += torque * m_angularFactor;
305  }
306 
307  void applyForce(const btVector3& force, const btVector3& rel_pos)
308  {
309  applyCentralForce(force);
310  applyTorque(rel_pos.cross(force * m_linearFactor));
311  }
312 
313  void applyCentralImpulse(const btVector3& impulse)
314  {
316  }
317 
318  void applyTorqueImpulse(const btVector3& torque)
319  {
321  }
322 
323  void applyImpulse(const btVector3& impulse, const btVector3& rel_pos)
324  {
325  if (m_inverseMass != btScalar(0.))
326  {
327  applyCentralImpulse(impulse);
328  if (m_angularFactor)
329  {
330  applyTorqueImpulse(rel_pos.cross(impulse * m_linearFactor));
331  }
332  }
333  }
334 
335  void clearForces()
336  {
337  m_totalForce.setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0));
338  m_totalTorque.setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0));
339  }
340 
341  void updateInertiaTensor();
342 
344  {
345  return m_worldTransform.getOrigin();
346  }
348 
350  {
351  return m_worldTransform;
352  }
354  {
355  return m_linearVelocity;
356  }
358  {
359  return m_angularVelocity;
360  }
361 
362  inline void setLinearVelocity(const btVector3& lin_vel)
363  {
365  m_linearVelocity = lin_vel;
366  }
367 
368  inline void setAngularVelocity(const btVector3& ang_vel)
369  {
371  m_angularVelocity = ang_vel;
372  }
373 
375  {
376  //we also calculate lin/ang velocity for kinematic objects
377  return m_linearVelocity + m_angularVelocity.cross(rel_pos);
378 
379  //for kinematic objects, we could also use use:
380  // return (m_worldTransform(rel_pos) - m_interpolationWorldTransform(rel_pos)) / m_kinematicTimeStep;
381  }
382 
383  void translate(const btVector3& v)
384  {
386  }
387 
388  void getAabb(btVector3& aabbMin, btVector3& aabbMax) const;
389 
391  {
392  btVector3 r0 = pos - getCenterOfMassPosition();
393 
394  btVector3 c0 = (r0).cross(normal);
395 
396  btVector3 vec = (c0 * getInvInertiaTensorWorld()).cross(r0);
397 
398  return m_inverseMass + normal.dot(vec);
399  }
400 
402  {
403  btVector3 vec = axis * getInvInertiaTensorWorld();
404  return axis.dot(vec);
405  }
406 
408  {
410  return;
411 
414  {
415  m_deactivationTime += timeStep;
416  }
417  else
418  {
421  }
422  }
423 
425  {
427  return false;
428 
429  //disable deactivation
431  return false;
432 
434  return true;
435 
437  {
438  return true;
439  }
440  return false;
441  }
442 
444  {
445  return m_broadphaseHandle;
446  }
448  {
449  return m_broadphaseHandle;
450  }
452  {
453  m_broadphaseHandle = broadphaseProxy;
454  }
455 
456  //btMotionState allows to automatic synchronize the world transform for active objects
458  {
459  return m_optionalMotionState;
460  }
462  {
463  return m_optionalMotionState;
464  }
465  void setMotionState(btMotionState* motionState)
466  {
467  m_optionalMotionState = motionState;
469  motionState->getWorldTransform(m_worldTransform);
470  }
471 
472  //for experimental overriding of friction/contact solver func
475 
476  void setAngularFactor(const btVector3& angFac)
477  {
479  m_angularFactor = angFac;
480  }
481 
483  {
485  m_angularFactor.setValue(angFac, angFac, angFac);
486  }
488  {
489  return m_angularFactor;
490  }
491 
492  //is this rigidbody added to a btCollisionWorld/btDynamicsWorld/btBroadphase?
493  bool isInWorld() const
494  {
495  return (getBroadphaseProxy() != 0);
496  }
497 
500 
502  {
503  return m_constraintRefs[index];
504  }
505 
507  {
508  return m_constraintRefs.size();
509  }
510 
511  void setFlags(int flags)
512  {
513  m_rigidbodyFlags = flags;
514  }
515 
516  int getFlags() const
517  {
518  return m_rigidbodyFlags;
519  }
520 
523 
526 
528  btVector3 computeGyroscopicForceExplicit(btScalar maxGyroscopicForce) const;
529  btVector3 getLocalInertia() const;
530 
532 
533  virtual int calculateSerializeBufferSize() const;
534 
536  virtual const char* serialize(void* dataBuffer, class btSerializer* serializer) const;
537 
538  virtual void serializeSingleObject(class btSerializer* serializer) const;
539 };
540 
541 //@todo add m_optionalMotionState and m_constraintRefs to btRigidBodyData
544 {
566 };
567 
570 {
592  char m_padding[4];
593 };
594 
595 #endif //BT_RIGIDBODY_H
btMatrix3x3DoubleData
for serialization
Definition: btMatrix3x3.h:1373
btRigidBodyDoubleData::m_invInertiaTensorWorld
btMatrix3x3DoubleData m_invInertiaTensorWorld
Definition: btRigidBody.h:572
btRigidBody::getAngularDamping
btScalar getAngularDamping() const
Definition: btRigidBody.h:223
btTypedConstraint
TypedConstraint is the baseclass for Bullet constraints and vehicles.
Definition: btTypedConstraint.h:74
btRigidBody::applyGravity
void applyGravity()
Definition: btRigidBody.cpp:201
btRigidBodyFloatData::m_additionalAngularDampingFactor
float m_additionalAngularDampingFactor
Definition: btRigidBody.h:562
btCollisionObject
btCollisionObject can be used to manage collision detection objects.
Definition: btCollisionObject.h:48
btRigidBody::btRigidBodyConstructionInfo::m_linearDamping
btScalar m_linearDamping
Definition: btRigidBody.h:120
btRigidBody::m_invInertiaTensorWorld
btMatrix3x3 m_invInertiaTensorWorld
Definition: btRigidBody.h:61
btBroadphaseProxy
The btBroadphaseProxy is the main class that can be used with the Bullet broadphases.
Definition: btBroadphaseProxy.h:84
btRigidBody
The btRigidBody is the main class for rigid body objects.
Definition: btRigidBody.h:59
btRigidBody::m_turnVelocity
btVector3 m_turnVelocity
Definition: btRigidBody.h:101
btRigidBody::getTotalTorque
const btVector3 & getTotalTorque() const
Definition: btRigidBody.h:281
btRigidBody::setAngularFactor
void setAngularFactor(const btVector3 &angFac)
Definition: btRigidBody.h:476
btRigidBodyFloatData::m_invInertiaLocal
btVector3FloatData m_invInertiaLocal
Definition: btRigidBody.h:553
btRigidBody::btRigidBodyConstructionInfo::m_angularSleepingThreshold
btScalar m_angularSleepingThreshold
Definition: btRigidBody.h:134
btRigidBody::btRigidBodyConstructionInfo::m_angularDamping
btScalar m_angularDamping
Definition: btRigidBody.h:121
BT_ENABLE_GYROPSCOPIC_FORCE
Definition: btRigidBody.h:48
BT_ENABLE_GYROSCOPIC_FORCE_EXPLICIT
BT_ENABLE_GYROPSCOPIC_FORCE flags is enabled by default in Bullet 2.83 and onwards.
Definition: btRigidBody.h:45
btRigidBody::predictIntegratedTransform
void predictIntegratedTransform(btScalar step, btTransform &predictedTransform)
continuous collision detection needs prediction
Definition: btRigidBody.cpp:100
DISABLE_DEACTIVATION
#define DISABLE_DEACTIVATION
Definition: btCollisionObject.h:25
btRigidBody::m_angularDamping
btScalar m_angularDamping
Definition: btRigidBody.h:74
btRigidBodyDoubleData::m_gravity_acceleration
btVector3DoubleData m_gravity_acceleration
Definition: btRigidBody.h:578
btRigidBody::btRigidBodyConstructionInfo::m_additionalAngularDampingThresholdSqr
btScalar m_additionalAngularDampingThresholdSqr
Definition: btRigidBody.h:141
btRigidBody::serialize
virtual const char * serialize(void *dataBuffer, class btSerializer *serializer) const
fills the dataBuffer and returns the struct name (and 0 on failure)
Definition: btRigidBody.cpp:450
btQuaternion
The btQuaternion implements quaternion to perform linear algebra rotations in combination with btMatr...
Definition: btQuaternion.h:49
btRigidBodyFloatData::m_linearDamping
float m_linearDamping
Definition: btRigidBody.h:557
gDeactivationTime
btScalar gDeactivationTime
Definition: btRigidBody.cpp:25
btRigidBody::serializeSingleObject
virtual void serializeSingleObject(class btSerializer *serializer) const
Definition: btRigidBody.cpp:485
btVector3::setValue
void setValue(const btScalar &_x, const btScalar &_y, const btScalar &_z)
Definition: btVector3.h:640
btRigidBody::btRigidBodyConstructionInfo::m_additionalLinearDampingThresholdSqr
btScalar m_additionalLinearDampingThresholdSqr
Definition: btRigidBody.h:140
btRigidBody::getAngularVelocity
const btVector3 & getAngularVelocity() const
Definition: btRigidBody.h:357
btScalar
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
Definition: btScalar.h:294
btRigidBody::m_totalTorque
btVector3 m_totalTorque
Definition: btRigidBody.h:71
btRigidBodyFloatData::m_gravity
btVector3FloatData m_gravity
Definition: btRigidBody.h:551
btRigidBody::m_additionalDamping
bool m_additionalDamping
Definition: btRigidBody.h:76
btRigidBody::btRigidBodyConstructionInfo::m_mass
btScalar m_mass
Definition: btRigidBody.h:111
btRigidBody::m_contactSolverType
int m_contactSolverType
Definition: btRigidBody.h:473
btRigidBody::m_rigidbodyFlags
int m_rigidbodyFlags
Definition: btRigidBody.h:91
btCollisionObjectDoubleData
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
Definition: btCollisionObject.h:591
btRigidBody::setGravity
void setGravity(const btVector3 &acceleration)
Definition: btRigidBody.cpp:128
btRigidBody::isInWorld
bool isInWorld() const
Definition: btRigidBody.h:493
btRigidBody::getBroadphaseProxy
btBroadphaseProxy * getBroadphaseProxy()
Definition: btRigidBody.h:447
btRigidBody::setSleepingThresholds
void setSleepingThresholds(btScalar linear, btScalar angular)
Definition: btRigidBody.h:296
btRigidBody::getNumConstraintRefs
int getNumConstraintRefs() const
Definition: btRigidBody.h:506
btRigidBody::computeGyroscopicForceExplicit
btVector3 computeGyroscopicForceExplicit(btScalar maxGyroscopicForce) const
explicit version is best avoided, it gains energy
Definition: btRigidBody.cpp:271
btCollisionObjectFloatData
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
Definition: btCollisionObject.h:626
btRigidBody::getLinearDamping
btScalar getLinearDamping() const
Definition: btRigidBody.h:218
btVector3::cross
btVector3 cross(const btVector3 &v) const
Return the cross product between this and another vector.
Definition: btVector3.h:380
btRigidBodyFloatData::m_additionalLinearDampingThresholdSqr
float m_additionalLinearDampingThresholdSqr
Definition: btRigidBody.h:560
btRigidBody::updateInertiaTensor
void updateInertiaTensor()
Definition: btRigidBody.cpp:237
btRigidBody::getAabb
void getAabb(btVector3 &aabbMin, btVector3 &aabbMax) const
Definition: btRigidBody.cpp:123
btRigidBodyFloatData::m_linearFactor
btVector3FloatData m_linearFactor
Definition: btRigidBody.h:550
btMotionState::getWorldTransform
virtual void getWorldTransform(btTransform &worldTrans) const =0
btRigidBodyDoubleData::m_angularFactor
btVector3DoubleData m_angularFactor
Definition: btRigidBody.h:575
btRigidBodyFloatData::m_totalForce
btVector3FloatData m_totalForce
Definition: btRigidBody.h:554
btRigidBodyDoubleData::m_invInertiaLocal
btVector3DoubleData m_invInertiaLocal
Definition: btRigidBody.h:579
btRigidBody::m_inverseMass
btScalar m_inverseMass
Definition: btRigidBody.h:64
btRigidBodyDoubleData::m_collisionObjectData
btCollisionObjectDoubleData m_collisionObjectData
Definition: btRigidBody.h:571
btRigidBody::translate
void translate(const btVector3 &v)
Definition: btRigidBody.h:383
btRigidBodyDoubleData::m_additionalAngularDampingThresholdSqr
double m_additionalAngularDampingThresholdSqr
Definition: btRigidBody.h:587
btRigidBody::integrateVelocities
void integrateVelocities(btScalar step)
Definition: btRigidBody.cpp:360
BT_ENABLE_GYROSCOPIC_FORCE_IMPLICIT_WORLD
Definition: btRigidBody.h:46
btVector3::dot
btScalar dot(const btVector3 &v) const
Return the dot product.
Definition: btVector3.h:229
btRigidBody::getAngularSleepingThreshold
btScalar getAngularSleepingThreshold() const
Definition: btRigidBody.h:233
btCollisionObject::getActivationState
int getActivationState() const
Definition: btCollisionObject.h:275
btCollisionObject::m_worldTransform
btTransform m_worldTransform
Definition: btCollisionObject.h:52
btRigidBody::computeGyroscopicImpulseImplicit_World
btVector3 computeGyroscopicImpulseImplicit_World(btScalar dt) const
perform implicit force computation in world space
Definition: btRigidBody.cpp:324
btRigidBodyFloatData::m_angularDamping
float m_angularDamping
Definition: btRigidBody.h:558
btRigidBodyDoubleData::m_linearSleepingThreshold
double m_linearSleepingThreshold
Definition: btRigidBody.h:589
BT_ENABLE_GYROSCOPIC_FORCE_IMPLICIT_BODY
Definition: btRigidBody.h:47
btRigidBody::applyTorqueImpulse
void applyTorqueImpulse(const btVector3 &torque)
Definition: btRigidBody.h:318
btRigidBody::m_gravity
btVector3 m_gravity
Definition: btRigidBody.h:67
btRigidBodyFloatData::m_angularFactor
btVector3FloatData m_angularFactor
Definition: btRigidBody.h:549
btRigidBody::btRigidBodyConstructionInfo::m_spinningFriction
btScalar m_spinningFriction
Definition: btRigidBody.h:128
btRigidBodyDoubleData::m_padding
char m_padding[4]
Definition: btRigidBody.h:592
btRigidBody::getCenterOfMassTransform
const btTransform & getCenterOfMassTransform() const
Definition: btRigidBody.h:349
btRigidBody::btRigidBodyConstructionInfo::m_startWorldTransform
btTransform m_startWorldTransform
Definition: btRigidBody.h:116
btCollisionObject::m_deactivationTime
btScalar m_deactivationTime
Definition: btCollisionObject.h:83
btRigidBody::wantsSleeping
bool wantsSleeping()
Definition: btRigidBody.h:424
btVector3FloatData
Definition: btVector3.h:1281
btRigidBody::setDamping
void setDamping(btScalar lin_damping, btScalar ang_damping)
Definition: btRigidBody.cpp:137
btRigidBody::m_angularSleepingThreshold
btScalar m_angularSleepingThreshold
Definition: btRigidBody.h:83
btTransform::setIdentity
void setIdentity()
Set this transformation to the identity.
Definition: btTransform.h:166
btRigidBody::setLinearFactor
void setLinearFactor(const btVector3 &linearFactor)
Definition: btRigidBody.h:256
btRigidBody::getOrientation
btQuaternion getOrientation() const
Definition: btRigidBody.cpp:377
btRigidBodyDoubleData::m_angularSleepingThreshold
double m_angularSleepingThreshold
Definition: btRigidBody.h:590
gDisableDeactivation
bool gDisableDeactivation
Definition: btRigidBody.cpp:26
btRigidBody::m_additionalLinearDampingThresholdSqr
btScalar m_additionalLinearDampingThresholdSqr
Definition: btRigidBody.h:78
btRigidBody::m_optionalMotionState
btMotionState * m_optionalMotionState
Definition: btRigidBody.h:86
btRigidBody::calculateSerializeBufferSize
virtual int calculateSerializeBufferSize() const
Definition: btRigidBody.cpp:443
btRigidBody::getInvInertiaDiagLocal
const btVector3 & getInvInertiaDiagLocal() const
Definition: btRigidBody.h:286
btCollisionObject::CO_RIGID_BODY
Definition: btCollisionObject.h:144
btRigidBody::setLinearVelocity
void setLinearVelocity(const btVector3 &lin_vel)
Definition: btRigidBody.h:362
btCollisionShape
The btCollisionShape class provides an interface for collision shapes that can be shared among btColl...
Definition: btCollisionShape.h:26
ISLAND_SLEEPING
#define ISLAND_SLEEPING
Definition: btCollisionObject.h:23
btAssert
#define btAssert(x)
Definition: btScalar.h:133
btCollisionObject::m_collisionShape
btCollisionShape * m_collisionShape
Definition: btCollisionObject.h:67
btRigidBody::setupRigidBody
void setupRigidBody(const btRigidBodyConstructionInfo &constructionInfo)
setupRigidBody is only used internally by the constructor
Definition: btRigidBody.cpp:40
btRigidBody::m_angularFactor
btVector3 m_angularFactor
Definition: btRigidBody.h:98
btRigidBodyFloatData::m_inverseMass
float m_inverseMass
Definition: btRigidBody.h:556
btRigidBody::clearForces
void clearForces()
Definition: btRigidBody.h:335
btRigidBody::getCollisionShape
const btCollisionShape * getCollisionShape() const
Definition: btRigidBody.h:240
btRigidBody::getLinearFactor
const btVector3 & getLinearFactor() const
Definition: btRigidBody.h:252
btRigidBody::btRigidBodyConstructionInfo::m_restitution
btScalar m_restitution
best simulation results using zero restitution.
Definition: btRigidBody.h:131
btVector3DoubleData
Definition: btVector3.h:1286
btRigidBody::setFlags
void setFlags(int flags)
Definition: btRigidBody.h:511
btRigidBody::applyCentralForce
void applyCentralForce(const btVector3 &force)
Definition: btRigidBody.h:271
btRigidBody::proceedToTransform
void proceedToTransform(const btTransform &newTrans)
Definition: btRigidBody.cpp:209
btRigidBody::updateDeactivation
void updateDeactivation(btScalar timeStep)
Definition: btRigidBody.h:407
btRigidBodyDoubleData::m_additionalDamping
int m_additionalDamping
Definition: btRigidBody.h:591
btRigidBody::btRigidBodyConstructionInfo::m_friction
btScalar m_friction
best simulation results when friction is non-zero
Definition: btRigidBody.h:124
btRigidBodyDoubleData::m_additionalLinearDampingThresholdSqr
double m_additionalLinearDampingThresholdSqr
Definition: btRigidBody.h:586
btRigidBody::btRigidBody
btRigidBody(const btRigidBodyConstructionInfo &constructionInfo)
btRigidBody constructor using construction info
Definition: btRigidBody.cpp:29
btRigidBody::getCollisionShape
btCollisionShape * getCollisionShape()
Definition: btRigidBody.h:245
btRigidBody::m_linearFactor
btVector3 m_linearFactor
Definition: btRigidBody.h:65
btRigidBody::getAngularFactor
const btVector3 & getAngularFactor() const
Definition: btRigidBody.h:487
btRigidBody::applyTorque
void applyTorque(const btVector3 &torque)
Definition: btRigidBody.h:302
btRigidBody::m_pushVelocity
btVector3 m_pushVelocity
Definition: btRigidBody.h:100
btRigidBodyDoubleData::m_totalTorque
btVector3DoubleData m_totalTorque
Definition: btRigidBody.h:581
btMatrix3x3
The btMatrix3x3 class implements a 3x3 rotation matrix, to perform linear algebra in combination with...
Definition: btMatrix3x3.h:46
btRigidBody::m_angularVelocity
btVector3 m_angularVelocity
Definition: btRigidBody.h:63
btTransform.h
btRigidBody::getInvMass
btScalar getInvMass() const
Definition: btRigidBody.h:261
btTransform
The btTransform class supports rigid transforms with only translation and rotation and no scaling/she...
Definition: btTransform.h:28
btMotionState
The btMotionState interface class allows the dynamics world to synchronize and interpolate the update...
Definition: btMotionState.h:23
btRigidBody::getBroadphaseProxy
const btBroadphaseProxy * getBroadphaseProxy() const
Definition: btRigidBody.h:443
btRigidBody::btRigidBodyConstructionInfo::m_additionalDamping
bool m_additionalDamping
Definition: btRigidBody.h:138
btRigidBody::btRigidBodyConstructionInfo::m_localInertia
btVector3 m_localInertia
Definition: btRigidBody.h:119
btRigidBody::m_invInertiaLocal
btVector3 m_invInertiaLocal
Definition: btRigidBody.h:69
btRigidBodyDoubleData::m_totalForce
btVector3DoubleData m_totalForce
Definition: btRigidBody.h:580
btRigidBodyFloatData::m_collisionObjectData
btCollisionObjectFloatData m_collisionObjectData
Definition: btRigidBody.h:545
btRigidBodyFloatData::m_angularSleepingThreshold
float m_angularSleepingThreshold
Definition: btRigidBody.h:564
btRigidBody::saveKinematicState
void saveKinematicState(btScalar step)
Definition: btRigidBody.cpp:105
btRigidBodyFloatData::m_totalTorque
btVector3FloatData m_totalTorque
Definition: btRigidBody.h:555
btRigidBodyFlags
btRigidBodyFlags
Definition: btRigidBody.h:39
btVector3
btVector3 can be used to represent 3D points and vectors.
Definition: btVector3.h:80
BT_DISABLE_WORLD_GRAVITY
Definition: btRigidBody.h:41
btRigidBody::m_deltaLinearVelocity
btVector3 m_deltaLinearVelocity
Definition: btRigidBody.h:96
btRigidBody::m_linearSleepingThreshold
btScalar m_linearSleepingThreshold
Definition: btRigidBody.h:82
btTransform::getOrigin
btVector3 & getOrigin()
Return the origin vector translation.
Definition: btTransform.h:113
btRigidBody::getLinearVelocity
const btVector3 & getLinearVelocity() const
Definition: btRigidBody.h:353
btRigidBody::getVelocityInLocalPoint
btVector3 getVelocityInLocalPoint(const btVector3 &rel_pos) const
Definition: btRigidBody.h:374
btRigidBody::getLinearSleepingThreshold
btScalar getLinearSleepingThreshold() const
Definition: btRigidBody.h:228
btRigidBody::getFlags
int getFlags() const
Definition: btRigidBody.h:516
btRigidBodyDoubleData
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
Definition: btRigidBody.h:569
btRigidBody::applyDamping
void applyDamping(btScalar timeStep)
applyDamping damps the velocity, using the given m_linearDamping and m_angularDamping
Definition: btRigidBody.cpp:144
btRigidBodyFloatData
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
Definition: btRigidBody.h:543
btRigidBody::addConstraintRef
void addConstraintRef(btTypedConstraint *c)
Definition: btRigidBody.cpp:400
ATTRIBUTE_ALIGNED16
#define ATTRIBUTE_ALIGNED16(a)
Definition: btScalar.h:84
btRigidBody::m_additionalAngularDampingThresholdSqr
btScalar m_additionalAngularDampingThresholdSqr
Definition: btRigidBody.h:79
btCollisionObject::m_updateRevision
int m_updateRevision
internal update revision number. It will be increased when the object changes. This allows some subsy...
Definition: btCollisionObject.h:119
btAlignedObjectArray< btTypedConstraint * >
btRigidBody::setAngularFactor
void setAngularFactor(btScalar angFac)
Definition: btRigidBody.h:482
btRigidBody::applyForce
void applyForce(const btVector3 &force, const btVector3 &rel_pos)
Definition: btRigidBody.h:307
btRigidBody::setAngularVelocity
void setAngularVelocity(const btVector3 &ang_vel)
Definition: btRigidBody.h:368
SIMD_FORCE_INLINE
#define SIMD_FORCE_INLINE
Definition: btScalar.h:83
btRigidBody::m_debugBodyId
int m_debugBodyId
Definition: btRigidBody.h:93
btBroadphaseProxy.h
btRigidBody::setNewBroadphaseProxy
void setNewBroadphaseProxy(btBroadphaseProxy *broadphaseProxy)
Definition: btRigidBody.h:451
btSerializer
Definition: btSerializer.h:65
btRigidBody::setMassProps
void setMassProps(btScalar mass, const btVector3 &inertia)
Definition: btRigidBody.cpp:214
btRigidBodyDoubleData::m_angularDamping
double m_angularDamping
Definition: btRigidBody.h:584
btRigidBody::btRigidBodyConstructionInfo::m_additionalDampingFactor
btScalar m_additionalDampingFactor
Definition: btRigidBody.h:139
btRigidBody::btRigidBodyConstructionInfo::m_collisionShape
btCollisionShape * m_collisionShape
Definition: btRigidBody.h:118
btRigidBody::applyCentralImpulse
void applyCentralImpulse(const btVector3 &impulse)
Definition: btRigidBody.h:313
btRigidBody::m_constraintRefs
btAlignedObjectArray< btTypedConstraint * > m_constraintRefs
Definition: btRigidBody.h:89
btRigidBodyDoubleData::m_linearVelocity
btVector3DoubleData m_linearVelocity
Definition: btRigidBody.h:573
btRigidBody::m_additionalDampingFactor
btScalar m_additionalDampingFactor
Definition: btRigidBody.h:77
btRigidBody::m_frictionSolverType
int m_frictionSolverType
Definition: btRigidBody.h:474
btRigidBody::m_linearDamping
btScalar m_linearDamping
Definition: btRigidBody.h:73
btRigidBodyFloatData::m_linearSleepingThreshold
float m_linearSleepingThreshold
Definition: btRigidBody.h:563
btRigidBody::m_linearVelocity
btVector3 m_linearVelocity
Definition: btRigidBody.h:62
btCollisionObject::getInternalType
int getInternalType() const
reserved for Bullet internal usage
Definition: btCollisionObject.h:360
btRigidBodyFloatData::m_angularVelocity
btVector3FloatData m_angularVelocity
Definition: btRigidBody.h:548
btRigidBodyDoubleData::m_additionalAngularDampingFactor
double m_additionalAngularDampingFactor
Definition: btRigidBody.h:588
btCollisionObject::m_broadphaseHandle
btBroadphaseProxy * m_broadphaseHandle
Definition: btCollisionObject.h:66
btRigidBody::btRigidBodyConstructionInfo::m_motionState
btMotionState * m_motionState
When a motionState is provided, the rigid body will initialize its world transform from the motion st...
Definition: btRigidBody.h:115
btRigidBodyFloatData::m_linearVelocity
btVector3FloatData m_linearVelocity
Definition: btRigidBody.h:547
btRigidBody::m_gravity_acceleration
btVector3 m_gravity_acceleration
Definition: btRigidBody.h:68
btRigidBody::getInvInertiaTensorWorld
const btMatrix3x3 & getInvInertiaTensorWorld() const
Definition: btRigidBody.h:262
btRigidBody::setInvInertiaDiagLocal
void setInvInertiaDiagLocal(const btVector3 &diagInvInertia)
Definition: btRigidBody.h:291
btRigidBody::setMotionState
void setMotionState(btMotionState *motionState)
Definition: btRigidBody.h:465
WANTS_DEACTIVATION
#define WANTS_DEACTIVATION
Definition: btCollisionObject.h:24
btRigidBody::setCenterOfMassTransform
void setCenterOfMassTransform(const btTransform &xform)
Definition: btRigidBody.cpp:384
btCollisionObject.h
btRigidBody::getConstraintRef
btTypedConstraint * getConstraintRef(int index)
Definition: btRigidBody.h:501
btRigidBodyFloatData::m_additionalAngularDampingThresholdSqr
float m_additionalAngularDampingThresholdSqr
Definition: btRigidBody.h:561
btRigidBody::getCenterOfMassPosition
const btVector3 & getCenterOfMassPosition() const
Definition: btRigidBody.h:343
btRigidBodyFloatData::m_additionalDampingFactor
float m_additionalDampingFactor
Definition: btRigidBody.h:559
btRigidBody::btRigidBodyConstructionInfo::m_additionalAngularDampingFactor
btScalar m_additionalAngularDampingFactor
Definition: btRigidBody.h:142
btRigidBody::btRigidBodyConstructionInfo::m_rollingFriction
btScalar m_rollingFriction
the m_rollingFriction prevents rounded shapes, such as spheres, cylinders and capsules from rolling f...
Definition: btRigidBody.h:127
btAlignedObjectArray.h
btRigidBody::m_deltaAngularVelocity
btVector3 m_deltaAngularVelocity
Definition: btRigidBody.h:97
btRigidBody::upcast
static btRigidBody * upcast(btCollisionObject *colObj)
Definition: btRigidBody.h:195
btRigidBody::btRigidBodyConstructionInfo
The btRigidBodyConstructionInfo structure provides information to create a rigid body.
Definition: btRigidBody.h:109
btRigidBody::getMotionState
const btMotionState * getMotionState() const
Definition: btRigidBody.h:461
btRigidBodyFloatData::m_invInertiaTensorWorld
btMatrix3x3FloatData m_invInertiaTensorWorld
Definition: btRigidBody.h:546
btRigidBodyDoubleData::m_inverseMass
double m_inverseMass
Definition: btRigidBody.h:582
btRigidBody::getTotalForce
const btVector3 & getTotalForce() const
Definition: btRigidBody.h:276
btRigidBody::applyImpulse
void applyImpulse(const btVector3 &impulse, const btVector3 &rel_pos)
Definition: btRigidBody.h:323
btRigidBody::m_additionalAngularDampingFactor
btScalar m_additionalAngularDampingFactor
Definition: btRigidBody.h:80
btRigidBodyFloatData::m_gravity_acceleration
btVector3FloatData m_gravity_acceleration
Definition: btRigidBody.h:552
btRigidBodyDoubleData::m_gravity
btVector3DoubleData m_gravity
Definition: btRigidBody.h:577
btMatrix3x3FloatData
for serialization
Definition: btMatrix3x3.h:1367
btRigidBodyFloatData::m_additionalDamping
int m_additionalDamping
Definition: btRigidBody.h:565
btRigidBodyDoubleData::m_additionalDampingFactor
double m_additionalDampingFactor
Definition: btRigidBody.h:585
btRigidBodyDoubleData::m_linearDamping
double m_linearDamping
Definition: btRigidBody.h:583
btRigidBody::computeImpulseDenominator
btScalar computeImpulseDenominator(const btVector3 &pos, const btVector3 &normal) const
Definition: btRigidBody.h:390
btRigidBody::~btRigidBody
virtual ~btRigidBody()
Definition: btRigidBody.h:173
btRigidBody::btRigidBodyConstructionInfo::btRigidBodyConstructionInfo
btRigidBodyConstructionInfo(btScalar mass, btMotionState *motionState, btCollisionShape *collisionShape, const btVector3 &localInertia=btVector3(0, 0, 0))
Definition: btRigidBody.h:144
btRigidBody::removeConstraintRef
void removeConstraintRef(btTypedConstraint *c)
Definition: btRigidBody.cpp:423
btRigidBody::getGravity
const btVector3 & getGravity() const
Definition: btRigidBody.h:211
btRigidBody::upcast
static const btRigidBody * upcast(const btCollisionObject *colObj)
to keep collision detection and dynamics separate we don't store a rigidbody pointer but a rigidbody ...
Definition: btRigidBody.h:189
btRigidBody::btRigidBodyConstructionInfo::m_linearSleepingThreshold
btScalar m_linearSleepingThreshold
Definition: btRigidBody.h:133
btRigidBody::computeAngularImpulseDenominator
btScalar computeAngularImpulseDenominator(const btVector3 &axis) const
Definition: btRigidBody.h:401
btRigidBody::getMotionState
btMotionState * getMotionState()
Definition: btRigidBody.h:457
btCollisionObject::setActivationState
void setActivationState(int newState) const
Definition: btCollisionObject.cpp:60
btAlignedObjectArray::size
int size() const
return the number of elements in the array
Definition: btAlignedObjectArray.h:149
btRigidBody::m_totalForce
btVector3 m_totalForce
Definition: btRigidBody.h:70
btRigidBodyDoubleData::m_linearFactor
btVector3DoubleData m_linearFactor
Definition: btRigidBody.h:576
btRigidBodyDoubleData::m_angularVelocity
btVector3DoubleData m_angularVelocity
Definition: btRigidBody.h:574
btRigidBody::computeGyroscopicImpulseImplicit_Body
btVector3 computeGyroscopicImpulseImplicit_Body(btScalar step) const
perform implicit force computation in body space (inertial frame)
Definition: btRigidBody.cpp:285
btRigidBody::m_invMass
btVector3 m_invMass
Definition: btRigidBody.h:99
btRigidBody::getLocalInertia
btVector3 getLocalInertia() const
Definition: btRigidBody.cpp:242