52 lines
1.7 KiB
C++
52 lines
1.7 KiB
C++
#ifndef CONVEX_TRIANGLEMESH_SHAPE_H
|
|
#define CONVEX_TRIANGLEMESH_SHAPE_H
|
|
|
|
|
|
#include "btPolyhedralConvexShape.h"
|
|
#include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h" // for the types
|
|
|
|
|
|
/// btConvexTriangleMeshShape is a convex hull of a triangle mesh. If you just have a point cloud, you can use btConvexHullShape instead.
|
|
/// It uses the btStridingMeshInterface instead of a point cloud. This can avoid the duplication of the triangle mesh data.
|
|
class btConvexTriangleMeshShape : public btPolyhedralConvexShape
|
|
{
|
|
|
|
class btStridingMeshInterface* m_stridingMesh;
|
|
|
|
public:
|
|
btConvexTriangleMeshShape(btStridingMeshInterface* meshInterface);
|
|
|
|
class btStridingMeshInterface* getStridingMesh()
|
|
{
|
|
return m_stridingMesh;
|
|
}
|
|
|
|
virtual btVector3 localGetSupportingVertex(const btVector3& vec)const;
|
|
virtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec)const;
|
|
virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const;
|
|
|
|
virtual int getShapeType()const { return CONVEX_TRIANGLEMESH_SHAPE_PROXYTYPE; }
|
|
|
|
//debugging
|
|
virtual const char* getName()const {return "ConvexTrimesh";}
|
|
|
|
virtual int getNumVertices() const;
|
|
virtual int getNumEdges() const;
|
|
virtual void getEdge(int i,btPoint3& pa,btPoint3& pb) const;
|
|
virtual void getVertex(int i,btPoint3& vtx) const;
|
|
virtual int getNumPlanes() const;
|
|
virtual void getPlane(btVector3& planeNormal,btPoint3& planeSupport,int i ) const;
|
|
virtual bool isInside(const btPoint3& pt,btScalar tolerance) const;
|
|
|
|
|
|
virtual void setLocalScaling(const btVector3& scaling);
|
|
virtual const btVector3& getLocalScaling() const;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif //CONVEX_TRIANGLEMESH_SHAPE_H
|
|
|
|
|