Back to index

supertuxkart  0.5+dfsg1
Functions
btCompoundShape.h File Reference
#include "btCollisionShape.h"
#include "LinearMath/btVector3.h"
#include "LinearMath/btTransform.h"
#include "LinearMath/btMatrix3x3.h"
#include "btCollisionMargin.h"
#include "LinearMath/btAlignedObjectArray.h"
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

 ATTRIBUTE_ALIGNED16 (struct) btCompoundShapeChild
 ATTRIBUTE_ALIGNED16 (class) btCompoundShape
 btCompoundShape allows to store multiple other btCollisionShapes This allows for concave collision objects. This is more general then the Static Concave btTriangleMeshShape.

Function Documentation

ATTRIBUTE_ALIGNED16 ( struct  )

Definition at line 29 of file btCompoundShape.h.

{
       BT_DECLARE_ALIGNED_ALLOCATOR();

       btTransform                 m_transform;
       btCollisionShape*    m_childShape;
       int                                m_childShapeType;
       btScalar                    m_childMargin;
};
ATTRIBUTE_ALIGNED16 ( class  )

btCompoundShape allows to store multiple other btCollisionShapes This allows for concave collision objects. This is more general then the Static Concave btTriangleMeshShape.

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

Definition at line 41 of file btCompoundShape.h.

                                                 : public btCollisionShape
{
       //btAlignedObjectArray<btTransform>              m_childTransforms;
       //btAlignedObjectArray<btCollisionShape*> m_childShapes;
       btAlignedObjectArray<btCompoundShapeChild> m_children;
       btVector3                                        m_localAabbMin;
       btVector3                                        m_localAabbMax;

       btOptimizedBvh*                                  m_aabbTree;

public:
       BT_DECLARE_ALIGNED_ALLOCATOR();

       btCompoundShape();

       virtual ~btCompoundShape();

       void   addChildShape(const btTransform& localTransform,btCollisionShape* shape);

       int           getNumChildShapes() const
       {
              return int (m_children.size());
       }

       btCollisionShape* getChildShape(int index)
       {
              return m_children[index].m_childShape;
       }
       const btCollisionShape* getChildShape(int index) const
       {
              return m_children[index].m_childShape;
       }

       btTransform   getChildTransform(int index)
       {
              return m_children[index].m_transform;
       }
       const btTransform    getChildTransform(int index) const
       {
              return m_children[index].m_transform;
       }


       btCompoundShapeChild* getChildList()
       {
              return &m_children[0];
       }

       void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const;


       virtual void  setLocalScaling(const btVector3& scaling)
       {
              m_localScaling = scaling;
       }
       virtual const btVector3& getLocalScaling() const 
       {
              return m_localScaling;
       }

       virtual void  calculateLocalInertia(btScalar mass,btVector3& inertia) const;
       
       virtual int   getShapeType() const { return COMPOUND_SHAPE_PROXYTYPE;}

       virtual void  setMargin(btScalar margin)
       {
              m_collisionMargin = margin;
       }
       virtual btScalar     getMargin() const
       {
              return m_collisionMargin;
       }
       virtual const char*  getName()const
       {
              return "Compound";
       }

       //this is optional, but should make collision queries faster, by culling non-overlapping nodes
       void   createAabbTreeFromChildren();

       const btOptimizedBvh*                                   getAabbTree() const
       {
              return m_aabbTree;
       }

private:
       btScalar      m_collisionMargin;
protected:
       btVector3     m_localScaling;

};

Here is the call graph for this function: