Bullet Collision Detection & Physics Library
btCollisionObject.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_COLLISION_OBJECT_H
17 #define BT_COLLISION_OBJECT_H
18 
19 #include "LinearMath/btTransform.h"
20 
21 //island management, m_activationState1
22 #define ACTIVE_TAG 1
23 #define ISLAND_SLEEPING 2
24 #define WANTS_DEACTIVATION 3
25 #define DISABLE_DEACTIVATION 4
26 #define DISABLE_SIMULATION 5
27 
28 struct btBroadphaseProxy;
29 class btCollisionShape;
34 
36 
37 #ifdef BT_USE_DOUBLE_PRECISION
38 #define btCollisionObjectData btCollisionObjectDoubleData
39 #define btCollisionObjectDataName "btCollisionObjectDoubleData"
40 #else
41 #define btCollisionObjectData btCollisionObjectFloatData
42 #define btCollisionObjectDataName "btCollisionObjectFloatData"
43 #endif
44 
45 
50 {
51 
52 protected:
53 
55 
59  //those two are experimental: just added for bullet time effect, so you can still apply impulses (directly modifying velocities)
60  //without destroying the continuous interpolated motion (which uses this interpolation velocities)
63 
67 
72 
77 
79 
82  int m_worldArrayIndex; // index of object in world's collisionObjects array
83 
84  mutable int m_activationState1;
86 
89  btScalar m_rollingFriction;//torsional friction orthogonal to contact normal (useful to stop spheres rolling forever)
90  btScalar m_spinningFriction; // torsional friction around the contact normal (useful for grasping)
93 
94 
95 
99 
101 
103 
105 
107 
110 
113 
116 
119 
121 
124 
126 
127 public:
128 
130 
132  {
133  CF_STATIC_OBJECT= 1,
134  CF_KINEMATIC_OBJECT= 2,
135  CF_NO_CONTACT_RESPONSE = 4,
136  CF_CUSTOM_MATERIAL_CALLBACK = 8,//this allows per-triangle material (friction/restitution)
137  CF_CHARACTER_OBJECT = 16,
138  CF_DISABLE_VISUALIZE_OBJECT = 32, //disable debug drawing
139  CF_DISABLE_SPU_COLLISION_PROCESSING = 64,//disable parallel/SPU processing
140  CF_HAS_CONTACT_STIFFNESS_DAMPING = 128,
141  CF_HAS_CUSTOM_DEBUG_RENDERING_COLOR = 256,
142  CF_HAS_FRICTION_ANCHOR = 512,
143  CF_HAS_COLLISION_SOUND_TRIGGER = 1024
144  };
145 
147  {
148  CO_COLLISION_OBJECT =1,
149  CO_RIGID_BODY=2,
152  CO_GHOST_OBJECT=4,
153  CO_SOFT_BODY=8,
154  CO_HF_FLUID=16,
155  CO_USER_TYPE=32,
156  CO_FEATHERSTONE_LINK=64
157  };
158 
160  {
161  CF_ANISOTROPIC_FRICTION_DISABLED=0,
162  CF_ANISOTROPIC_FRICTION = 1,
163  CF_ANISOTROPIC_ROLLING_FRICTION = 2
164  };
165 
167  {
169  return ((m_collisionFlags & (CF_STATIC_OBJECT | CF_KINEMATIC_OBJECT | CF_NO_CONTACT_RESPONSE) )==0);
170  }
171 
173  {
174  return m_anisotropicFriction;
175  }
176  void setAnisotropicFriction(const btVector3& anisotropicFriction, int frictionMode = CF_ANISOTROPIC_FRICTION)
177  {
178  m_anisotropicFriction = anisotropicFriction;
179  bool isUnity = (anisotropicFriction[0]!=1.f) || (anisotropicFriction[1]!=1.f) || (anisotropicFriction[2]!=1.f);
180  m_hasAnisotropicFriction = isUnity?frictionMode : 0;
181  }
182  bool hasAnisotropicFriction(int frictionMode = CF_ANISOTROPIC_FRICTION) const
183  {
184  return (m_hasAnisotropicFriction&frictionMode)!=0;
185  }
186 
189  void setContactProcessingThreshold( btScalar contactProcessingThreshold)
190  {
191  m_contactProcessingThreshold = contactProcessingThreshold;
192  }
194  {
195  return m_contactProcessingThreshold;
196  }
197 
199  return (m_collisionFlags & CF_STATIC_OBJECT) != 0;
200  }
201 
203  {
204  return (m_collisionFlags & CF_KINEMATIC_OBJECT) != 0;
205  }
206 
208  {
209  return (m_collisionFlags & (CF_KINEMATIC_OBJECT | CF_STATIC_OBJECT)) != 0 ;
210  }
211 
213  return (m_collisionFlags & CF_NO_CONTACT_RESPONSE)==0;
214  }
215 
216 
218 
219  virtual ~btCollisionObject();
220 
221  virtual void setCollisionShape(btCollisionShape* collisionShape)
222  {
223  m_updateRevision++;
224  m_collisionShape = collisionShape;
225  m_rootCollisionShape = collisionShape;
226  }
227 
229  {
230  return m_collisionShape;
231  }
232 
234  {
235  return m_collisionShape;
236  }
237 
238  void setIgnoreCollisionCheck(const btCollisionObject* co, bool ignoreCollisionCheck)
239  {
240  if (ignoreCollisionCheck)
241  {
242  //We don't check for duplicates. Is it ok to leave that up to the user of this API?
243  //int index = m_objectsWithoutCollisionCheck.findLinearSearch(co);
244  //if (index == m_objectsWithoutCollisionCheck.size())
245  //{
246  m_objectsWithoutCollisionCheck.push_back(co);
247  //}
248  }
249  else
250  {
251  m_objectsWithoutCollisionCheck.remove(co);
252  }
253  m_checkCollideWith = m_objectsWithoutCollisionCheck.size() > 0;
254  }
255 
256  virtual bool checkCollideWithOverride(const btCollisionObject* co) const
257  {
258  int index = m_objectsWithoutCollisionCheck.findLinearSearch(co);
259  if (index < m_objectsWithoutCollisionCheck.size())
260  {
261  return false;
262  }
263  return true;
264  }
265 
266 
267 
268 
272  {
273  return m_extensionPointer;
274  }
277  void internalSetExtensionPointer(void* pointer)
278  {
279  m_extensionPointer = pointer;
280  }
281 
282  SIMD_FORCE_INLINE int getActivationState() const { return m_activationState1;}
283 
284  void setActivationState(int newState) const;
285 
287  {
288  m_deactivationTime = time;
289  }
291  {
292  return m_deactivationTime;
293  }
294 
295  void forceActivationState(int newState) const;
296 
297  void activate(bool forceActivation = false) const;
298 
300  {
301  return ((getActivationState() != ISLAND_SLEEPING) && (getActivationState() != DISABLE_SIMULATION));
302  }
303 
305  {
306  m_updateRevision++;
307  m_restitution = rest;
308  }
310  {
311  return m_restitution;
312  }
313  void setFriction(btScalar frict)
314  {
315  m_updateRevision++;
316  m_friction = frict;
317  }
319  {
320  return m_friction;
321  }
322 
324  {
325  m_updateRevision++;
326  m_rollingFriction = frict;
327  }
329  {
330  return m_rollingFriction;
331  }
333  {
334  m_updateRevision++;
335  m_spinningFriction = frict;
336  }
338  {
339  return m_spinningFriction;
340  }
342  {
343  m_updateRevision++;
344  m_contactStiffness = stiffness;
345  m_contactDamping = damping;
346 
347  m_collisionFlags |=CF_HAS_CONTACT_STIFFNESS_DAMPING;
348 
349  //avoid divisions by zero...
350  if (m_contactStiffness< SIMD_EPSILON)
351  {
352  m_contactStiffness = SIMD_EPSILON;
353  }
354  }
355 
357  {
358  return m_contactStiffness;
359  }
360 
362  {
363  return m_contactDamping;
364  }
365 
367  int getInternalType() const
368  {
369  return m_internalType;
370  }
371 
373  {
374  return m_worldTransform;
375  }
376 
378  {
379  return m_worldTransform;
380  }
381 
382  void setWorldTransform(const btTransform& worldTrans)
383  {
384  m_updateRevision++;
385  m_worldTransform = worldTrans;
386  }
387 
388 
390  {
391  return m_broadphaseHandle;
392  }
393 
395  {
396  return m_broadphaseHandle;
397  }
398 
400  {
401  m_broadphaseHandle = handle;
402  }
403 
404 
406  {
407  return m_interpolationWorldTransform;
408  }
409 
411  {
412  return m_interpolationWorldTransform;
413  }
414 
416  {
417  m_updateRevision++;
418  m_interpolationWorldTransform = trans;
419  }
420 
422  {
423  m_updateRevision++;
424  m_interpolationLinearVelocity = linvel;
425  }
426 
428  {
429  m_updateRevision++;
430  m_interpolationAngularVelocity = angvel;
431  }
432 
434  {
435  return m_interpolationLinearVelocity;
436  }
437 
439  {
440  return m_interpolationAngularVelocity;
441  }
442 
444  {
445  return m_islandTag1;
446  }
447 
448  void setIslandTag(int tag)
449  {
450  m_islandTag1 = tag;
451  }
452 
454  {
455  return m_companionId;
456  }
457 
458  void setCompanionId(int id)
459  {
460  m_companionId = id;
461  }
462 
464  {
465  return m_worldArrayIndex;
466  }
467 
468  // only should be called by CollisionWorld
469  void setWorldArrayIndex(int ix)
470  {
471  m_worldArrayIndex = ix;
472  }
473 
475  {
476  return m_hitFraction;
477  }
478 
479  void setHitFraction(btScalar hitFraction)
480  {
481  m_hitFraction = hitFraction;
482  }
483 
484 
486  {
487  return m_collisionFlags;
488  }
489 
490  void setCollisionFlags(int flags)
491  {
492  m_collisionFlags = flags;
493  }
494 
497  {
498  return m_ccdSweptSphereRadius;
499  }
500 
503  {
504  m_ccdSweptSphereRadius = radius;
505  }
506 
508  {
509  return m_ccdMotionThreshold;
510  }
511 
513  {
514  return m_ccdMotionThreshold*m_ccdMotionThreshold;
515  }
516 
517 
518 
520  void setCcdMotionThreshold(btScalar ccdMotionThreshold)
521  {
522  m_ccdMotionThreshold = ccdMotionThreshold;
523  }
524 
526  void* getUserPointer() const
527  {
528  return m_userObjectPointer;
529  }
530 
531  int getUserIndex() const
532  {
533  return m_userIndex;
534  }
535 
536  int getUserIndex2() const
537  {
538  return m_userIndex2;
539  }
540 
542  void setUserPointer(void* userPointer)
543  {
544  m_userObjectPointer = userPointer;
545  }
546 
548  void setUserIndex(int index)
549  {
550  m_userIndex = index;
551  }
552 
553  void setUserIndex2(int index)
554  {
555  m_userIndex2 = index;
556  }
557 
559  {
560  return m_updateRevision;
561  }
562 
563  void setCustomDebugColor(const btVector3& colorRGB)
564  {
565  m_customDebugColorRGB = colorRGB;
566  m_collisionFlags |= CF_HAS_CUSTOM_DEBUG_RENDERING_COLOR;
567  }
568 
570  {
571  m_collisionFlags &= ~CF_HAS_CUSTOM_DEBUG_RENDERING_COLOR;
572  }
573 
574  bool getCustomDebugColor(btVector3& colorRGB) const
575  {
576  bool hasCustomColor = (0!=(m_collisionFlags&CF_HAS_CUSTOM_DEBUG_RENDERING_COLOR));
577  if (hasCustomColor)
578  {
579  colorRGB = m_customDebugColorRGB;
580  }
581  return hasCustomColor;
582  }
583 
584  inline bool checkCollideWith(const btCollisionObject* co) const
585  {
586  if (m_checkCollideWith)
587  return checkCollideWithOverride(co);
588 
589  return true;
590  }
591 
592  virtual int calculateSerializeBufferSize() const;
593 
595  virtual const char* serialize(void* dataBuffer, class btSerializer* serializer) const;
596 
597  virtual void serializeSingleObject(class btSerializer* serializer) const;
598 
599 };
600 
603 {
607  char *m_name;
608 
616  double m_friction;
621  double m_hitFraction;
624 
632 
633  char m_padding[4];
634 };
635 
638 {
642  char *m_name;
643 
651  float m_friction;
659 
667  char m_padding[4];
668 };
669 
670 
671 
673 {
674  return sizeof(btCollisionObjectData);
675 }
676 
677 
678 
679 #endif //BT_COLLISION_OBJECT_H
SIMD_EPSILON
#define SIMD_EPSILON
Definition: btScalar.h:521
btCollisionShapeData
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
Definition: btCollisionShape.h:155
btCollisionObject::checkCollideWithOverride
virtual bool checkCollideWithOverride(const btCollisionObject *co) const
Definition: btCollisionObject.h:256
btTransformDoubleData
Definition: btTransform.h:259
btCollisionObject::m_userIndex
int m_userIndex
Definition: btCollisionObject.h:106
btCollisionObject
btCollisionObject can be used to manage collision detection objects.
Definition: btCollisionObject.h:49
DISABLE_SIMULATION
#define DISABLE_SIMULATION
Definition: btCollisionObject.h:26
btCollisionObject::getContactDamping
btScalar getContactDamping() const
Definition: btCollisionObject.h:361
btBroadphaseProxy
The btBroadphaseProxy is the main class that can be used with the Bullet broadphases.
Definition: btBroadphaseProxy.h:85
btCollisionObject::getUserIndex2
int getUserIndex2() const
Definition: btCollisionObject.h:536
btCollisionObjectDoubleData::m_ccdMotionThreshold
double m_ccdMotionThreshold
Definition: btCollisionObject.h:623
btCollisionObject::getUpdateRevisionInternal
int getUpdateRevisionInternal() const
Definition: btCollisionObject.h:558
btCollisionObjectFloatData::m_collisionFlags
int m_collisionFlags
Definition: btCollisionObject.h:661
btCollisionObject::m_ccdSweptSphereRadius
btScalar m_ccdSweptSphereRadius
Swept sphere radius (0.0 by default), see btConvexConvexAlgorithm::
Definition: btCollisionObject.h:112
btCollisionObjectFloatData::m_checkCollideWith
int m_checkCollideWith
Definition: btCollisionObject.h:666
btCollisionObject::m_interpolationWorldTransform
btTransform m_interpolationWorldTransform
m_interpolationWorldTransform is used for CCD and interpolation it can be either previous or future (...
Definition: btCollisionObject.h:58
btCollisionObjectDoubleData::m_islandTag1
int m_islandTag1
Definition: btCollisionObject.h:627
btCollisionObject::AnisotropicFrictionFlags
AnisotropicFrictionFlags
Definition: btCollisionObject.h:159
btCollisionObject::setContactStiffnessAndDamping
void setContactStiffnessAndDamping(btScalar stiffness, btScalar damping)
Definition: btCollisionObject.h:341
btCollisionObject::getBroadphaseHandle
const btBroadphaseProxy * getBroadphaseHandle() const
Definition: btCollisionObject.h:394
btCollisionObjectFloatData::m_internalType
int m_internalType
Definition: btCollisionObject.h:665
btCollisionObjectFloatData::m_islandTag1
int m_islandTag1
Definition: btCollisionObject.h:662
btCollisionObjectFloatData::m_name
char * m_name
Definition: btCollisionObject.h:642
btScalar
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
Definition: btScalar.h:292
btMotionState.h
btCollisionObjectDoubleData::m_rollingFriction
double m_rollingFriction
Definition: btCollisionObject.h:617
btCollisionObjectDoubleData::m_companionId
int m_companionId
Definition: btCollisionObject.h:628
btCollisionObjectDoubleData
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
Definition: btCollisionObject.h:602
btCollisionObject::setCcdMotionThreshold
void setCcdMotionThreshold(btScalar ccdMotionThreshold)
Don't do continuous collision detection if the motion (in one step) is less then m_ccdMotionThreshold...
Definition: btCollisionObject.h:520
btCollisionObject::m_objectsWithoutCollisionCheck
btAlignedObjectArray< const btCollisionObject * > m_objectsWithoutCollisionCheck
Definition: btCollisionObject.h:120
btCollisionObject::mergesSimulationIslands
bool mergesSimulationIslands() const
Definition: btCollisionObject.h:166
btCollisionObjectFloatData
do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64
Definition: btCollisionObject.h:637
btCollisionObject::setWorldArrayIndex
void setWorldArrayIndex(int ix)
Definition: btCollisionObject.h:469
btCollisionObjectDoubleData::m_broadphaseHandle
void * m_broadphaseHandle
Definition: btCollisionObject.h:604
btCollisionObject::m_ccdMotionThreshold
btScalar m_ccdMotionThreshold
Don't do continuous collision detection if the motion (in one step) is less then m_ccdMotionThreshold...
Definition: btCollisionObject.h:115
btAlignedObjectArray::findLinearSearch
int findLinearSearch(const T &key) const
Definition: btAlignedObjectArray.h:463
btCollisionObject::removeCustomDebugColor
void removeCustomDebugColor()
Definition: btCollisionObject.h:569
btCollisionObjectFloatData::m_interpolationWorldTransform
btTransformFloatData m_interpolationWorldTransform
Definition: btCollisionObject.h:645
btCollisionObjectData
#define btCollisionObjectData
Definition: btCollisionObject.h:41
btCollisionObject::getActivationState
int getActivationState() const
Definition: btCollisionObject.h:282
btCollisionObject::m_worldTransform
btTransform m_worldTransform
Definition: btCollisionObject.h:54
btCollisionObjectDoubleData::m_interpolationWorldTransform
btTransformDoubleData m_interpolationWorldTransform
Definition: btCollisionObject.h:610
btCollisionObject::setCustomDebugColor
void setCustomDebugColor(const btVector3 &colorRGB)
Definition: btCollisionObject.h:563
btCollisionObjectDoubleData::m_worldTransform
btTransformDoubleData m_worldTransform
Definition: btCollisionObject.h:609
btCollisionObject::getContactStiffness
btScalar getContactStiffness() const
Definition: btCollisionObject.h:356
btCollisionObjectDoubleData::m_collisionShape
void * m_collisionShape
Definition: btCollisionObject.h:605
btCollisionObject::m_hitFraction
btScalar m_hitFraction
time of impact calculation
Definition: btCollisionObject.h:109
btCollisionObject::getWorldTransform
const btTransform & getWorldTransform() const
Definition: btCollisionObject.h:377
btCollisionObject::setHitFraction
void setHitFraction(btScalar hitFraction)
Definition: btCollisionObject.h:479
btCollisionObjectFloatData::m_rootCollisionShape
btCollisionShapeData * m_rootCollisionShape
Definition: btCollisionObject.h:641
btCollisionObject::isKinematicObject
bool isKinematicObject() const
Definition: btCollisionObject.h:202
btCollisionObject::m_contactDamping
btScalar m_contactDamping
Definition: btCollisionObject.h:91
btCollisionObjectDoubleData::m_interpolationLinearVelocity
btVector3DoubleData m_interpolationLinearVelocity
Definition: btCollisionObject.h:611
btCollisionObject::getInterpolationLinearVelocity
const btVector3 & getInterpolationLinearVelocity() const
Definition: btCollisionObject.h:433
btCollisionObject::m_deactivationTime
btScalar m_deactivationTime
Definition: btCollisionObject.h:85
btCollisionObjectFloatData::m_ccdMotionThreshold
float m_ccdMotionThreshold
Definition: btCollisionObject.h:658
btCollisionObjectDoubleData::m_padding
char m_padding[4]
Definition: btCollisionObject.h:633
btVector3FloatData
Definition: btVector3.h:1312
btCollisionObjectDoubleData::m_restitution
double m_restitution
Definition: btCollisionObject.h:620
btCollisionObjectFloatData::m_deactivationTime
float m_deactivationTime
Definition: btCollisionObject.h:650
btCollisionObject::m_spinningFriction
btScalar m_spinningFriction
Definition: btCollisionObject.h:90
btCollisionObjectFloatData::m_restitution
float m_restitution
Definition: btCollisionObject.h:655
btCollisionObject::isStaticOrKinematicObject
bool isStaticOrKinematicObject() const
Definition: btCollisionObject.h:207
btCollisionObjectDoubleData::m_deactivationTime
double m_deactivationTime
Definition: btCollisionObject.h:615
btCollisionObject::m_internalType
int m_internalType
m_internalType is reserved to distinguish Bullet's btCollisionObject, btRigidBody,...
Definition: btCollisionObject.h:98
btCollisionObjectFloatData::m_broadphaseHandle
void * m_broadphaseHandle
Definition: btCollisionObject.h:639
btCollisionObject::setIgnoreCollisionCheck
void setIgnoreCollisionCheck(const btCollisionObject *co, bool ignoreCollisionCheck)
Definition: btCollisionObject.h:238
btCollisionObject::m_hasAnisotropicFriction
int m_hasAnisotropicFriction
Definition: btCollisionObject.h:65
btCollisionObjectFloatData::m_collisionShape
void * m_collisionShape
Definition: btCollisionObject.h:640
btCollisionObject::getWorldTransform
btTransform & getWorldTransform()
Definition: btCollisionObject.h:372
btCollisionObject::checkCollideWith
bool checkCollideWith(const btCollisionObject *co) const
Definition: btCollisionObject.h:584
btCollisionShape
The btCollisionShape class provides an interface for collision shapes that can be shared among btColl...
Definition: btCollisionShape.h:27
ISLAND_SLEEPING
#define ISLAND_SLEEPING
Definition: btCollisionObject.h:23
btCollisionObjectDoubleData::m_contactDamping
double m_contactDamping
Definition: btCollisionObject.h:618
btCollisionObject::setRestitution
void setRestitution(btScalar rest)
Definition: btCollisionObject.h:304
btCollisionObject::m_collisionShape
btCollisionShape * m_collisionShape
Definition: btCollisionObject.h:69
btCollisionObject::m_worldArrayIndex
int m_worldArrayIndex
Definition: btCollisionObject.h:82
btVector3DoubleData
Definition: btVector3.h:1317
btCollisionObject::getCcdSquareMotionThreshold
btScalar getCcdSquareMotionThreshold() const
Definition: btCollisionObject.h:512
btCollisionObject::setCcdSweptSphereRadius
void setCcdSweptSphereRadius(btScalar radius)
Swept sphere radius (0.0 by default), see btConvexConvexAlgorithm::
Definition: btCollisionObject.h:502
btCollisionObject::setCollisionShape
virtual void setCollisionShape(btCollisionShape *collisionShape)
Definition: btCollisionObject.h:221
btCollisionObjectFloatData::m_padding
char m_padding[4]
Definition: btCollisionObject.h:667
btCollisionObject::m_anisotropicFriction
btVector3 m_anisotropicFriction
Definition: btCollisionObject.h:64
btCollisionObject::m_rootCollisionShape
btCollisionShape * m_rootCollisionShape
m_rootCollisionShape is temporarily used to store the original collision shape The m_collisionShape m...
Definition: btCollisionObject.h:76
btCollisionObjectFloatData::m_rollingFriction
float m_rollingFriction
Definition: btCollisionObject.h:652
btCollisionObject::setSpinningFriction
void setSpinningFriction(btScalar frict)
Definition: btCollisionObject.h:332
btCollisionObject::setUserIndex
void setUserIndex(int index)
users can point to their objects, userPointer is not used by Bullet
Definition: btCollisionObject.h:548
btCollisionObject::getDeactivationTime
btScalar getDeactivationTime() const
Definition: btCollisionObject.h:290
btCollisionObjectFloatData::m_activationState1
int m_activationState1
Definition: btCollisionObject.h:664
btAlignedAllocator.h
btCollisionObjectFloatData::m_worldTransform
btTransformFloatData m_worldTransform
Definition: btCollisionObject.h:644
btCollisionObject::getAnisotropicFriction
const btVector3 & getAnisotropicFriction() const
Definition: btCollisionObject.h:172
btCollisionObject::m_customDebugColorRGB
btVector3 m_customDebugColorRGB
Definition: btCollisionObject.h:125
btCollisionObjectFloatData::m_interpolationAngularVelocity
btVector3FloatData m_interpolationAngularVelocity
Definition: btCollisionObject.h:647
btCollisionObject::getBroadphaseHandle
btBroadphaseProxy * getBroadphaseHandle()
Definition: btCollisionObject.h:389
btCollisionObject::setFriction
void setFriction(btScalar frict)
Definition: btCollisionObject.h:313
btCollisionObject::getInterpolationWorldTransform
const btTransform & getInterpolationWorldTransform() const
Definition: btCollisionObject.h:405
btCollisionObject::setWorldTransform
void setWorldTransform(const btTransform &worldTrans)
Definition: btCollisionObject.h:382
btCollisionObject::getRollingFriction
btScalar getRollingFriction() const
Definition: btCollisionObject.h:328
btTransform.h
btCollisionObject::calculateSerializeBufferSize
virtual int calculateSerializeBufferSize() const
Definition: btCollisionObject.h:672
btCollisionObject::setCompanionId
void setCompanionId(int id)
Definition: btCollisionObject.h:458
btTransform
The btTransform class supports rigid transforms with only translation and rotation and no scaling/she...
Definition: btTransform.h:34
btCollisionObject::m_activationState1
int m_activationState1
Definition: btCollisionObject.h:84
btCollisionObject::getUserIndex
int getUserIndex() const
Definition: btCollisionObject.h:531
btCollisionObject::getCollisionFlags
int getCollisionFlags() const
Definition: btCollisionObject.h:485
btCollisionObject::setDeactivationTime
void setDeactivationTime(btScalar time)
Definition: btCollisionObject.h:286
btCollisionObjectFloatData::m_anisotropicFriction
btVector3FloatData m_anisotropicFriction
Definition: btCollisionObject.h:648
btCollisionObject::isStaticObject
bool isStaticObject() const
Definition: btCollisionObject.h:198
btCollisionObject::setInterpolationAngularVelocity
void setInterpolationAngularVelocity(const btVector3 &angvel)
Definition: btCollisionObject.h:427
btCollisionObject::setInterpolationWorldTransform
void setInterpolationWorldTransform(const btTransform &trans)
Definition: btCollisionObject.h:415
btCollisionObjectDoubleData::m_activationState1
int m_activationState1
Definition: btCollisionObject.h:629
BT_DECLARE_ALIGNED_ALLOCATOR
#define BT_DECLARE_ALIGNED_ALLOCATOR()
Definition: btScalar.h:403
btCollisionObject::getRestitution
btScalar getRestitution() const
Definition: btCollisionObject.h:309
btCollisionObject::getInterpolationWorldTransform
btTransform & getInterpolationWorldTransform()
Definition: btCollisionObject.h:410
btVector3
btVector3 can be used to represent 3D points and vectors.
Definition: btVector3.h:83
btCollisionObject::getContactProcessingThreshold
btScalar getContactProcessingThreshold() const
Definition: btCollisionObject.h:193
btCollisionObject::m_rollingFriction
btScalar m_rollingFriction
Definition: btCollisionObject.h:89
btCollisionObject::setAnisotropicFriction
void setAnisotropicFriction(const btVector3 &anisotropicFriction, int frictionMode=CF_ANISOTROPIC_FRICTION)
Definition: btCollisionObject.h:176
btCollisionObject::hasContactResponse
bool hasContactResponse() const
Definition: btCollisionObject.h:212
btCollisionObject::m_extensionPointer
void * m_extensionPointer
m_extensionPointer is used by some internal low-level Bullet extensions.
Definition: btCollisionObject.h:71
btCollisionObject::setUserPointer
void setUserPointer(void *userPointer)
users can point to their objects, userPointer is not used by Bullet
Definition: btCollisionObject.h:542
btCollisionObjectArray
btAlignedObjectArray< class btCollisionObject * > btCollisionObjectArray
Definition: btCollisionObject.h:30
btCollisionObject::getCcdMotionThreshold
btScalar getCcdMotionThreshold() const
Definition: btCollisionObject.h:507
btCollisionObjectFloatData::m_companionId
int m_companionId
Definition: btCollisionObject.h:663
btCollisionObject::m_contactProcessingThreshold
btScalar m_contactProcessingThreshold
Definition: btCollisionObject.h:66
btCollisionObjectDoubleData::m_contactProcessingThreshold
double m_contactProcessingThreshold
Definition: btCollisionObject.h:614
btCollisionObject::getWorldArrayIndex
int getWorldArrayIndex() const
Definition: btCollisionObject.h:463
btCollisionObject::getIslandTag
int getIslandTag() const
Definition: btCollisionObject.h:443
ATTRIBUTE_ALIGNED16
#define ATTRIBUTE_ALIGNED16(a)
Definition: btScalar.h:82
btCollisionObject::m_collisionFlags
int m_collisionFlags
Definition: btCollisionObject.h:78
btCollisionObject::m_interpolationAngularVelocity
btVector3 m_interpolationAngularVelocity
Definition: btCollisionObject.h:62
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:123
btTransformFloatData
for serialization
Definition: btTransform.h:253
btAlignedObjectArray
The btAlignedObjectArray template class uses a subset of the stl::vector interface for its methods It...
Definition: btAlignedObjectArray.h:53
btCollisionObject::internalGetExtensionPointer
void * internalGetExtensionPointer() const
Avoid using this internal API call, the extension pointer is used by some Bullet extensions.
Definition: btCollisionObject.h:271
btCollisionObjectFloatData::m_contactProcessingThreshold
float m_contactProcessingThreshold
Definition: btCollisionObject.h:649
btCollisionObject::CollisionFlags
CollisionFlags
Definition: btCollisionObject.h:131
btCollisionObjectDoubleData::m_ccdSweptSphereRadius
double m_ccdSweptSphereRadius
Definition: btCollisionObject.h:622
btCollisionObjectDoubleData::m_contactStiffness
double m_contactStiffness
Definition: btCollisionObject.h:619
btCollisionObject::setRollingFriction
void setRollingFriction(btScalar frict)
Definition: btCollisionObject.h:323
SIMD_FORCE_INLINE
#define SIMD_FORCE_INLINE
Definition: btScalar.h:81
btCollisionObject::getCollisionShape
btCollisionShape * getCollisionShape()
Definition: btCollisionObject.h:233
btCollisionObject::internalSetExtensionPointer
void internalSetExtensionPointer(void *pointer)
Avoid using this internal API call, the extension pointer is used by some Bullet extensions If you ne...
Definition: btCollisionObject.h:277
btSerializer
Definition: btSerializer.h:68
btCollisionObject::CollisionObjectTypes
CollisionObjectTypes
Definition: btCollisionObject.h:146
btCollisionObject::setBroadphaseHandle
void setBroadphaseHandle(btBroadphaseProxy *handle)
Definition: btCollisionObject.h:399
btCollisionObjectFloatData::m_hasAnisotropicFriction
int m_hasAnisotropicFriction
Definition: btCollisionObject.h:660
btCollisionObject::m_restitution
btScalar m_restitution
Definition: btCollisionObject.h:88
btCollisionObject::setCollisionFlags
void setCollisionFlags(int flags)
Definition: btCollisionObject.h:490
btCollisionObject::setInterpolationLinearVelocity
void setInterpolationLinearVelocity(const btVector3 &linvel)
Definition: btCollisionObject.h:421
btCollisionObject::getHitFraction
btScalar getHitFraction() const
Definition: btCollisionObject.h:474
btCollisionObject::getSpinningFriction
btScalar getSpinningFriction() const
Definition: btCollisionObject.h:337
btCollisionObjectDoubleData::m_collisionFlags
int m_collisionFlags
Definition: btCollisionObject.h:626
btCollisionObject::getInternalType
int getInternalType() const
reserved for Bullet internal usage
Definition: btCollisionObject.h:367
btCollisionObject::m_broadphaseHandle
btBroadphaseProxy * m_broadphaseHandle
Definition: btCollisionObject.h:68
btCollisionObject::setIslandTag
void setIslandTag(int tag)
Definition: btCollisionObject.h:448
btCollisionObject::isActive
bool isActive() const
Definition: btCollisionObject.h:299
btCollisionObjectDoubleData::m_name
char * m_name
Definition: btCollisionObject.h:607
btCollisionObjectFloatData::m_friction
float m_friction
Definition: btCollisionObject.h:651
btCollisionObjectDoubleData::m_interpolationAngularVelocity
btVector3DoubleData m_interpolationAngularVelocity
Definition: btCollisionObject.h:612
btCollisionObject::m_checkCollideWith
int m_checkCollideWith
If some object should have elaborate collision filtering by sub-classes.
Definition: btCollisionObject.h:118
btCollisionObjectDoubleData::m_hasAnisotropicFriction
int m_hasAnisotropicFriction
Definition: btCollisionObject.h:625
btCollisionObject::getCustomDebugColor
bool getCustomDebugColor(btVector3 &colorRGB) const
Definition: btCollisionObject.h:574
btAlignedObjectArray.h
btCollisionObjectFloatData::m_contactDamping
float m_contactDamping
Definition: btCollisionObject.h:653
btCollisionObject::getCcdSweptSphereRadius
btScalar getCcdSweptSphereRadius() const
Swept sphere radius (0.0 by default), see btConvexConvexAlgorithm::
Definition: btCollisionObject.h:496
btCollisionObject::setContactProcessingThreshold
void setContactProcessingThreshold(btScalar contactProcessingThreshold)
the constraint solver can discard solving contacts, if the distance is above this threshold.
Definition: btCollisionObject.h:189
btCollisionObject::m_contactStiffness
btScalar m_contactStiffness
Definition: btCollisionObject.h:92
btCollisionObject::hasAnisotropicFriction
bool hasAnisotropicFriction(int frictionMode=CF_ANISOTROPIC_FRICTION) const
Definition: btCollisionObject.h:182
btCollisionObjectFloatData::m_contactStiffness
float m_contactStiffness
Definition: btCollisionObject.h:654
btCollisionObject::m_userObjectPointer
void * m_userObjectPointer
users can point to their objects, m_userPointer is not used by Bullet, see setUserPointer/getUserPoin...
Definition: btCollisionObject.h:102
btCollisionObjectFloatData::m_hitFraction
float m_hitFraction
Definition: btCollisionObject.h:656
btCollisionObjectDoubleData::m_anisotropicFriction
btVector3DoubleData m_anisotropicFriction
Definition: btCollisionObject.h:613
btCollisionObject::m_islandTag1
int m_islandTag1
Definition: btCollisionObject.h:80
btAlignedObjectArray::push_back
void push_back(const T &_Val)
Definition: btAlignedObjectArray.h:274
btCollisionObjectDoubleData::m_hitFraction
double m_hitFraction
Definition: btCollisionObject.h:621
btCollisionObjectDoubleData::m_rootCollisionShape
btCollisionShapeData * m_rootCollisionShape
Definition: btCollisionObject.h:606
btAlignedObjectArray::remove
void remove(const T &key)
Definition: btAlignedObjectArray.h:505
btCollisionObjectFloatData::m_interpolationLinearVelocity
btVector3FloatData m_interpolationLinearVelocity
Definition: btCollisionObject.h:646
btCollisionObject::getFriction
btScalar getFriction() const
Definition: btCollisionObject.h:318
btCollisionObjectFloatData::m_ccdSweptSphereRadius
float m_ccdSweptSphereRadius
Definition: btCollisionObject.h:657
btCollisionObject::m_interpolationLinearVelocity
btVector3 m_interpolationLinearVelocity
Definition: btCollisionObject.h:61
btCollisionObject::getUserPointer
void * getUserPointer() const
users can point to their objects, userPointer is not used by Bullet
Definition: btCollisionObject.h:526
btCollisionObjectDoubleData::m_internalType
int m_internalType
Definition: btCollisionObject.h:630
btCollisionObject::setUserIndex2
void setUserIndex2(int index)
Definition: btCollisionObject.h:553
btCollisionObjectDoubleData::m_friction
double m_friction
Definition: btCollisionObject.h:616
btCollisionObject::m_companionId
int m_companionId
Definition: btCollisionObject.h:81
btCollisionObject::m_friction
btScalar m_friction
Definition: btCollisionObject.h:87
btCollisionObject::m_userIndex2
int m_userIndex2
Definition: btCollisionObject.h:104
btAlignedObjectArray::size
int size() const
return the number of elements in the array
Definition: btAlignedObjectArray.h:155
btCollisionObject::getInterpolationAngularVelocity
const btVector3 & getInterpolationAngularVelocity() const
Definition: btCollisionObject.h:438
btCollisionObject::getCollisionShape
const btCollisionShape * getCollisionShape() const
Definition: btCollisionObject.h:228
btCollisionObjectDoubleData::m_checkCollideWith
int m_checkCollideWith
Definition: btCollisionObject.h:631
btCollisionObject::getCompanionId
int getCompanionId() const
Definition: btCollisionObject.h:453