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