Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef BT_CONVEX_TRIANGLEMESH_SHAPE_H
00016 #define BT_CONVEX_TRIANGLEMESH_SHAPE_H
00017
00018
00019 #include "btPolyhedralConvexShape.h"
00020 #include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"
00021
00022
00025 class btConvexTriangleMeshShape : public btPolyhedralConvexAabbCachingShape
00026 {
00027
00028 class btStridingMeshInterface* m_stridingMesh;
00029
00030 public:
00031 btConvexTriangleMeshShape(btStridingMeshInterface* meshInterface, bool calcAabb = true);
00032
00033 class btStridingMeshInterface* getMeshInterface()
00034 {
00035 return m_stridingMesh;
00036 }
00037 const class btStridingMeshInterface* getMeshInterface() const
00038 {
00039 return m_stridingMesh;
00040 }
00041
00042 virtual btVector3 localGetSupportingVertex(const btVector3& vec)const;
00043 virtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec)const;
00044 virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const;
00045
00046
00047 virtual const char* getName()const {return "ConvexTrimesh";}
00048
00049 virtual int getNumVertices() const;
00050 virtual int getNumEdges() const;
00051 virtual void getEdge(int i,btVector3& pa,btVector3& pb) const;
00052 virtual void getVertex(int i,btVector3& vtx) const;
00053 virtual int getNumPlanes() const;
00054 virtual void getPlane(btVector3& planeNormal,btVector3& planeSupport,int i ) const;
00055 virtual bool isInside(const btVector3& pt,btScalar tolerance) const;
00056
00057
00058 virtual void setLocalScaling(const btVector3& scaling);
00059 virtual const btVector3& getLocalScaling() const;
00060
00066 void calculatePrincipalAxisTransform(btTransform& principal, btVector3& inertia, btScalar& volume) const;
00067
00068 };
00069
00070
00071
00072 #endif //BT_CONVEX_TRIANGLEMESH_SHAPE_H
00073
00074
00075