Differential D8762 Diff 28333 extern/bullet2/src/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h
Changeset View
Changeset View
Standalone View
Standalone View
extern/bullet2/src/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h
| Show All 16 Lines | |||||
| #ifndef BT_BVH_TRIANGLE_MATERIAL_MESH_SHAPE_H | #ifndef BT_BVH_TRIANGLE_MATERIAL_MESH_SHAPE_H | ||||
| #define BT_BVH_TRIANGLE_MATERIAL_MESH_SHAPE_H | #define BT_BVH_TRIANGLE_MATERIAL_MESH_SHAPE_H | ||||
| #include "btBvhTriangleMeshShape.h" | #include "btBvhTriangleMeshShape.h" | ||||
| #include "btMaterial.h" | #include "btMaterial.h" | ||||
| ///The BvhTriangleMaterialMeshShape extends the btBvhTriangleMeshShape. Its main contribution is the interface into a material array, which allows per-triangle friction and restitution. | ///The BvhTriangleMaterialMeshShape extends the btBvhTriangleMeshShape. Its main contribution is the interface into a material array, which allows per-triangle friction and restitution. | ||||
| ATTRIBUTE_ALIGNED16(class) btMultimaterialTriangleMeshShape : public btBvhTriangleMeshShape | ATTRIBUTE_ALIGNED16(class) | ||||
| btMultimaterialTriangleMeshShape : public btBvhTriangleMeshShape | |||||
| { | { | ||||
| btAlignedObjectArray <btMaterial*> m_materialList; | btAlignedObjectArray<btMaterial *> m_materialList; | ||||
| public: | public: | ||||
| BT_DECLARE_ALIGNED_ALLOCATOR(); | BT_DECLARE_ALIGNED_ALLOCATOR(); | ||||
| btMultimaterialTriangleMeshShape(btStridingMeshInterface* meshInterface, bool useQuantizedAabbCompression, bool buildBvh = true): | btMultimaterialTriangleMeshShape(btStridingMeshInterface * meshInterface, bool useQuantizedAabbCompression, bool buildBvh = true) : btBvhTriangleMeshShape(meshInterface, useQuantizedAabbCompression, buildBvh) | ||||
| btBvhTriangleMeshShape(meshInterface, useQuantizedAabbCompression, buildBvh) | |||||
| { | { | ||||
| m_shapeType = MULTIMATERIAL_TRIANGLE_MESH_PROXYTYPE; | m_shapeType = MULTIMATERIAL_TRIANGLE_MESH_PROXYTYPE; | ||||
| const unsigned char *vertexbase; | const unsigned char *vertexbase; | ||||
| int numverts; | int numverts; | ||||
| PHY_ScalarType type; | PHY_ScalarType type; | ||||
| int stride; | int stride; | ||||
| const unsigned char *indexbase; | const unsigned char *indexbase; | ||||
| int indexstride; | int indexstride; | ||||
| int numfaces; | int numfaces; | ||||
| PHY_ScalarType indicestype; | PHY_ScalarType indicestype; | ||||
| //m_materialLookup = (int**)(btAlignedAlloc(sizeof(int*) * meshInterface->getNumSubParts(), 16)); | //m_materialLookup = (int**)(btAlignedAlloc(sizeof(int*) * meshInterface->getNumSubParts(), 16)); | ||||
| for(int i = 0; i < meshInterface->getNumSubParts(); i++) | for (int i = 0; i < meshInterface->getNumSubParts(); i++) | ||||
| { | { | ||||
| m_meshInterface->getLockedReadOnlyVertexIndexBase( | m_meshInterface->getLockedReadOnlyVertexIndexBase( | ||||
| &vertexbase, | &vertexbase, | ||||
| numverts, | numverts, | ||||
| type, | type, | ||||
| stride, | stride, | ||||
| &indexbase, | &indexbase, | ||||
| indexstride, | indexstride, | ||||
| numfaces, | numfaces, | ||||
| indicestype, | indicestype, | ||||
| i); | i); | ||||
| //m_materialLookup[i] = (int*)(btAlignedAlloc(sizeof(int) * numfaces, 16)); | //m_materialLookup[i] = (int*)(btAlignedAlloc(sizeof(int) * numfaces, 16)); | ||||
| } | } | ||||
| } | } | ||||
| ///optionally pass in a larger bvh aabb, used for quantization. This allows for deformations within this aabb | ///optionally pass in a larger bvh aabb, used for quantization. This allows for deformations within this aabb | ||||
| btMultimaterialTriangleMeshShape(btStridingMeshInterface* meshInterface, bool useQuantizedAabbCompression,const btVector3& bvhAabbMin,const btVector3& bvhAabbMax, bool buildBvh = true): | btMultimaterialTriangleMeshShape(btStridingMeshInterface * meshInterface, bool useQuantizedAabbCompression, const btVector3 &bvhAabbMin, const btVector3 &bvhAabbMax, bool buildBvh = true) : btBvhTriangleMeshShape(meshInterface, useQuantizedAabbCompression, bvhAabbMin, bvhAabbMax, buildBvh) | ||||
| btBvhTriangleMeshShape(meshInterface, useQuantizedAabbCompression, bvhAabbMin, bvhAabbMax, buildBvh) | |||||
| { | { | ||||
| m_shapeType = MULTIMATERIAL_TRIANGLE_MESH_PROXYTYPE; | m_shapeType = MULTIMATERIAL_TRIANGLE_MESH_PROXYTYPE; | ||||
| const unsigned char *vertexbase; | const unsigned char *vertexbase; | ||||
| int numverts; | int numverts; | ||||
| PHY_ScalarType type; | PHY_ScalarType type; | ||||
| int stride; | int stride; | ||||
| const unsigned char *indexbase; | const unsigned char *indexbase; | ||||
| int indexstride; | int indexstride; | ||||
| int numfaces; | int numfaces; | ||||
| PHY_ScalarType indicestype; | PHY_ScalarType indicestype; | ||||
| //m_materialLookup = (int**)(btAlignedAlloc(sizeof(int*) * meshInterface->getNumSubParts(), 16)); | //m_materialLookup = (int**)(btAlignedAlloc(sizeof(int*) * meshInterface->getNumSubParts(), 16)); | ||||
| for(int i = 0; i < meshInterface->getNumSubParts(); i++) | for (int i = 0; i < meshInterface->getNumSubParts(); i++) | ||||
| { | { | ||||
| m_meshInterface->getLockedReadOnlyVertexIndexBase( | m_meshInterface->getLockedReadOnlyVertexIndexBase( | ||||
| &vertexbase, | &vertexbase, | ||||
| numverts, | numverts, | ||||
| type, | type, | ||||
| stride, | stride, | ||||
| &indexbase, | &indexbase, | ||||
| indexstride, | indexstride, | ||||
| numfaces, | numfaces, | ||||
| indicestype, | indicestype, | ||||
| i); | i); | ||||
| //m_materialLookup[i] = (int*)(btAlignedAlloc(sizeof(int) * numfaces * 2, 16)); | //m_materialLookup[i] = (int*)(btAlignedAlloc(sizeof(int) * numfaces * 2, 16)); | ||||
| } | } | ||||
| } | } | ||||
| virtual ~btMultimaterialTriangleMeshShape() | virtual ~btMultimaterialTriangleMeshShape() | ||||
| { | { | ||||
| /* | /* | ||||
| for(int i = 0; i < m_meshInterface->getNumSubParts(); i++) | for(int i = 0; i < m_meshInterface->getNumSubParts(); i++) | ||||
| { | { | ||||
| btAlignedFree(m_materialValues[i]); | btAlignedFree(m_materialValues[i]); | ||||
| m_materialLookup[i] = NULL; | m_materialLookup[i] = NULL; | ||||
| } | } | ||||
| btAlignedFree(m_materialValues); | btAlignedFree(m_materialValues); | ||||
| m_materialLookup = NULL; | m_materialLookup = NULL; | ||||
| */ | */ | ||||
| } | } | ||||
| //debugging | //debugging | ||||
| virtual const char* getName()const {return "MULTIMATERIALTRIANGLEMESH";} | virtual const char *getName() const { return "MULTIMATERIALTRIANGLEMESH"; } | ||||
| ///Obtains the material for a specific triangle | ///Obtains the material for a specific triangle | ||||
| const btMaterial * getMaterialProperties(int partID, int triIndex); | const btMaterial *getMaterialProperties(int partID, int triIndex); | ||||
| }; | |||||
| } | |||||
| ; | |||||
| #endif //BT_BVH_TRIANGLE_MATERIAL_MESH_SHAPE_H | #endif //BT_BVH_TRIANGLE_MATERIAL_MESH_SHAPE_H | ||||