Bullet Collision Detection & Physics Library
Public Member Functions | Protected Attributes | List of all members
btCompoundShape Class Reference

The btCompoundShape allows to store multiple other btCollisionShapes This allows for moving concave collision objects. More...

#include <btCompoundShape.h>

Inheritance diagram for btCompoundShape:
Inheritance graph
[legend]
Collaboration diagram for btCompoundShape:
Collaboration graph
[legend]

Public Member Functions

 BT_DECLARE_ALIGNED_ALLOCATOR ()
 
 btCompoundShape (bool enableDynamicAabbTree=true, const int initialChildCapacity=0)
 
virtual ~btCompoundShape ()
 
void addChildShape (const btTransform &localTransform, btCollisionShape *shape)
 
virtual void removeChildShape (btCollisionShape *shape)
 Remove all children shapes that contain the specified shape. More...
 
void removeChildShapeByIndex (int childShapeindex)
 
int getNumChildShapes () const
 
btCollisionShapegetChildShape (int index)
 
const btCollisionShapegetChildShape (int index) const
 
btTransformgetChildTransform (int index)
 
const btTransformgetChildTransform (int index) const
 
void updateChildTransform (int childIndex, const btTransform &newChildTransform, bool shouldRecalculateLocalAabb=true)
 set a new transform for a child, and update internal data structures (local aabb and dynamic tree) More...
 
btCompoundShapeChildgetChildList ()
 
virtual void getAabb (const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const
 getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version More...
 
virtual void recalculateLocalAabb ()
 Re-calculate the local Aabb. More...
 
virtual void setLocalScaling (const btVector3 &scaling)
 
virtual const btVector3getLocalScaling () const
 
virtual void calculateLocalInertia (btScalar mass, btVector3 &inertia) const
 
virtual void setMargin (btScalar margin)
 
virtual btScalar getMargin () const
 
virtual const char * getName () const
 
const btDbvtgetDynamicAabbTree () const
 
btDbvtgetDynamicAabbTree ()
 
void createAabbTreeFromChildren ()
 
void calculatePrincipalAxisTransform (const btScalar *masses, btTransform &principal, btVector3 &inertia) const
 computes the exact moment of inertia and the transform from the coordinate system defined by the principal axes of the moment of inertia and the center of mass to the current coordinate system. More...
 
int getUpdateRevision () const
 
virtual int calculateSerializeBufferSize () const
 
virtual const char * serialize (void *dataBuffer, btSerializer *serializer) const
 fills the dataBuffer and returns the struct name (and 0 on failure) More...
 
- Public Member Functions inherited from btCollisionShape
 BT_DECLARE_ALIGNED_ALLOCATOR ()
 
 btCollisionShape ()
 
virtual ~btCollisionShape ()
 
virtual void getBoundingSphere (btVector3 &center, btScalar &radius) const
 
virtual btScalar getAngularMotionDisc () const
 getAngularMotionDisc returns the maximum radius needed for Conservative Advancement to handle time-of-impact with rotations. More...
 
virtual btScalar getContactBreakingThreshold (btScalar defaultContactThresholdFactor) const
 
void calculateTemporalAabb (const btTransform &curTrans, const btVector3 &linvel, const btVector3 &angvel, btScalar timeStep, btVector3 &temporalAabbMin, btVector3 &temporalAabbMax) const
 calculateTemporalAabb calculates the enclosing aabb for the moving object over interval [0..timeStep) result is conservative More...
 
bool isPolyhedral () const
 
bool isConvex2d () const
 
bool isConvex () const
 
bool isNonMoving () const
 
bool isConcave () const
 
bool isCompound () const
 
bool isSoftBody () const
 
bool isInfinite () const
 isInfinite is used to catch simulation error (aabb check) More...
 
int getShapeType () const
 
virtual btVector3 getAnisotropicRollingFrictionDirection () const
 the getAnisotropicRollingFrictionDirection can be used in combination with setAnisotropicFriction See Bullet/Demos/RollingFrictionDemo for an example More...
 
void setUserPointer (void *userPtr)
 optional user data pointer More...
 
void * getUserPointer () const
 
void setUserIndex (int index)
 
int getUserIndex () const
 
virtual void serializeSingleShape (btSerializer *serializer) const
 

Protected Attributes

btAlignedObjectArray< btCompoundShapeChildm_children
 
btVector3 m_localAabbMin
 
btVector3 m_localAabbMax
 
btDbvtm_dynamicAabbTree
 
int m_updateRevision
 increment m_updateRevision when adding/removing/replacing child shapes, so that some caches can be updated More...
 
btScalar m_collisionMargin
 
btVector3 m_localScaling
 
- Protected Attributes inherited from btCollisionShape
int m_shapeType
 
void * m_userPointer
 
int m_userIndex
 

Detailed Description

The btCompoundShape allows to store multiple other btCollisionShapes This allows for moving concave collision objects.

This is more general then the static concave btBvhTriangleMeshShape. It has an (optional) dynamic aabb tree to accelerate early rejection tests.

Definition at line 54 of file btCompoundShape.h.

Constructor & Destructor Documentation

btCompoundShape::btCompoundShape ( bool  enableDynamicAabbTree = true,
const int  initialChildCapacity = 0 
)
explicit

Definition at line 21 of file btCompoundShape.cpp.

btCompoundShape::~btCompoundShape ( )
virtual

Definition at line 42 of file btCompoundShape.cpp.

Member Function Documentation

void btCompoundShape::addChildShape ( const btTransform localTransform,
btCollisionShape shape 
)

Definition at line 51 of file btCompoundShape.cpp.

btCompoundShape::BT_DECLARE_ALIGNED_ALLOCATOR ( )
void btCompoundShape::calculateLocalInertia ( btScalar  mass,
btVector3 inertia 
) const
virtual

Implements btCollisionShape.

Definition at line 193 of file btCompoundShape.cpp.

void btCompoundShape::calculatePrincipalAxisTransform ( const btScalar masses,
btTransform principal,
btVector3 inertia 
) const

computes the exact moment of inertia and the transform from the coordinate system defined by the principal axes of the moment of inertia and the center of mass to the current coordinate system.

"masses" points to an array of masses of the children. The resulting transform "principal" has to be applied inversely to all children transforms in order for the local coordinate system of the compound shape to be centered at the center of mass and to coincide with the principal axes. This also necessitates a correction of the world transform of the collision object by the principal transform.

Definition at line 216 of file btCompoundShape.cpp.

int btCompoundShape::calculateSerializeBufferSize ( ) const
inlinevirtual

Reimplemented from btCollisionShape.

Definition at line 201 of file btCompoundShape.h.

void btCompoundShape::createAabbTreeFromChildren ( )

Definition at line 300 of file btCompoundShape.cpp.

void btCompoundShape::getAabb ( const btTransform t,
btVector3 aabbMin,
btVector3 aabbMax 
) const
virtual

getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version

Implements btCollisionShape.

Definition at line 169 of file btCompoundShape.cpp.

btCompoundShapeChild* btCompoundShape::getChildList ( )
inline

Definition at line 112 of file btCompoundShape.h.

btCollisionShape* btCompoundShape::getChildShape ( int  index)
inline

Definition at line 90 of file btCompoundShape.h.

const btCollisionShape* btCompoundShape::getChildShape ( int  index) const
inline

Definition at line 94 of file btCompoundShape.h.

btTransform& btCompoundShape::getChildTransform ( int  index)
inline

Definition at line 99 of file btCompoundShape.h.

const btTransform& btCompoundShape::getChildTransform ( int  index) const
inline

Definition at line 103 of file btCompoundShape.h.

const btDbvt* btCompoundShape::getDynamicAabbTree ( ) const
inline

Definition at line 146 of file btCompoundShape.h.

btDbvt* btCompoundShape::getDynamicAabbTree ( )
inline

Definition at line 151 of file btCompoundShape.h.

virtual const btVector3& btCompoundShape::getLocalScaling ( ) const
inlinevirtual

Implements btCollisionShape.

Definition at line 126 of file btCompoundShape.h.

virtual btScalar btCompoundShape::getMargin ( ) const
inlinevirtual

Implements btCollisionShape.

Definition at line 137 of file btCompoundShape.h.

virtual const char* btCompoundShape::getName ( ) const
inlinevirtual

Implements btCollisionShape.

Definition at line 141 of file btCompoundShape.h.

int btCompoundShape::getNumChildShapes ( ) const
inline

Definition at line 85 of file btCompoundShape.h.

int btCompoundShape::getUpdateRevision ( ) const
inline

Definition at line 165 of file btCompoundShape.h.

void btCompoundShape::recalculateLocalAabb ( )
virtual

Re-calculate the local Aabb.

Is called at the end of removeChildShapes. Use this yourself if you modify the children or their transforms.

Definition at line 145 of file btCompoundShape.cpp.

void btCompoundShape::removeChildShape ( btCollisionShape shape)
virtual

Remove all children shapes that contain the specified shape.

Definition at line 127 of file btCompoundShape.cpp.

void btCompoundShape::removeChildShapeByIndex ( int  childShapeindex)

Definition at line 110 of file btCompoundShape.cpp.

const char * btCompoundShape::serialize ( void *  dataBuffer,
btSerializer serializer 
) const
virtual

fills the dataBuffer and returns the struct name (and 0 on failure)

Reimplemented from btCollisionShape.

Definition at line 325 of file btCompoundShape.cpp.

void btCompoundShape::setLocalScaling ( const btVector3 scaling)
virtual

Implements btCollisionShape.

Definition at line 280 of file btCompoundShape.cpp.

virtual void btCompoundShape::setMargin ( btScalar  margin)
inlinevirtual

Implements btCollisionShape.

Definition at line 133 of file btCompoundShape.h.

void btCompoundShape::updateChildTransform ( int  childIndex,
const btTransform newChildTransform,
bool  shouldRecalculateLocalAabb = true 
)

set a new transform for a child, and update internal data structures (local aabb and dynamic tree)

update the dynamic aabb tree

Definition at line 90 of file btCompoundShape.cpp.

Member Data Documentation

btAlignedObjectArray<btCompoundShapeChild> btCompoundShape::m_children
protected

Definition at line 57 of file btCompoundShape.h.

btScalar btCompoundShape::m_collisionMargin
protected

Definition at line 66 of file btCompoundShape.h.

btDbvt* btCompoundShape::m_dynamicAabbTree
protected

Definition at line 61 of file btCompoundShape.h.

btVector3 btCompoundShape::m_localAabbMax
protected

Definition at line 59 of file btCompoundShape.h.

btVector3 btCompoundShape::m_localAabbMin
protected

Definition at line 58 of file btCompoundShape.h.

btVector3 btCompoundShape::m_localScaling
protected

Definition at line 68 of file btCompoundShape.h.

int btCompoundShape::m_updateRevision
protected

increment m_updateRevision when adding/removing/replacing child shapes, so that some caches can be updated

Definition at line 64 of file btCompoundShape.h.


The documentation for this class was generated from the following files: