Differential D8762 Diff 28333 extern/bullet2/src/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp
Changeset View
Changeset View
Standalone View
Standalone View
extern/bullet2/src/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp
| Show All 13 Lines | |||||
| */ | */ | ||||
| /// This file was created by Alex Silverman | /// This file was created by Alex Silverman | ||||
| #include "BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h" | #include "BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h" | ||||
| #include "BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h" | #include "BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h" | ||||
| //#include "BulletCollision/CollisionShapes/btOptimizedBvh.h" | //#include "BulletCollision/CollisionShapes/btOptimizedBvh.h" | ||||
| ///Obtains the material for a specific triangle | ///Obtains the material for a specific triangle | ||||
| const btMaterial * btMultimaterialTriangleMeshShape::getMaterialProperties(int partID, int triIndex) | const btMaterial *btMultimaterialTriangleMeshShape::getMaterialProperties(int partID, int triIndex) | ||||
| { | { | ||||
| const unsigned char * materialBase = 0; | const unsigned char *materialBase = 0; | ||||
| int numMaterials; | int numMaterials; | ||||
| PHY_ScalarType materialType; | PHY_ScalarType materialType; | ||||
| int materialStride; | int materialStride; | ||||
| const unsigned char * triangleMaterialBase = 0; | const unsigned char *triangleMaterialBase = 0; | ||||
| int numTriangles; | int numTriangles; | ||||
| int triangleMaterialStride; | int triangleMaterialStride; | ||||
| PHY_ScalarType triangleType; | PHY_ScalarType triangleType; | ||||
| ((btTriangleIndexVertexMaterialArray*)m_meshInterface)->getLockedReadOnlyMaterialBase(&materialBase, numMaterials, materialType, materialStride, | ((btTriangleIndexVertexMaterialArray *)m_meshInterface)->getLockedReadOnlyMaterialBase(&materialBase, numMaterials, materialType, materialStride, &triangleMaterialBase, numTriangles, triangleMaterialStride, triangleType, partID); | ||||
| &triangleMaterialBase, numTriangles, triangleMaterialStride, triangleType, partID); | |||||
| // return the pointer to the place with the friction for the triangle | // return the pointer to the place with the friction for the triangle | ||||
| // TODO: This depends on whether it's a moving mesh or not | // TODO: This depends on whether it's a moving mesh or not | ||||
| // BUG IN GIMPACT | // BUG IN GIMPACT | ||||
| //return (btScalar*)(&materialBase[triangleMaterialBase[(triIndex-1) * triangleMaterialStride] * materialStride]); | //return (btScalar*)(&materialBase[triangleMaterialBase[(triIndex-1) * triangleMaterialStride] * materialStride]); | ||||
| int * matInd = (int *)(&(triangleMaterialBase[(triIndex * triangleMaterialStride)])); | int *matInd = (int *)(&(triangleMaterialBase[(triIndex * triangleMaterialStride)])); | ||||
| btMaterial *matVal = (btMaterial *)(&(materialBase[*matInd * materialStride])); | btMaterial *matVal = (btMaterial *)(&(materialBase[*matInd * materialStride])); | ||||
| return (matVal); | return (matVal); | ||||
| } | } | ||||