Update raycasting test code for convex mesh and remove commented code

This commit is contained in:
Daniel Chappuis 2017-08-22 07:38:22 +02:00
parent 624e01b595
commit e725af80b6
2 changed files with 46 additions and 108 deletions

View File

@ -110,7 +110,6 @@ class TestRaycast : public Test {
CollisionBody* mSphereBody; CollisionBody* mSphereBody;
CollisionBody* mCapsuleBody; CollisionBody* mCapsuleBody;
CollisionBody* mConvexMeshBody; CollisionBody* mConvexMeshBody;
CollisionBody* mConvexMeshBodyEdgesInfo;
CollisionBody* mCylinderBody; CollisionBody* mCylinderBody;
CollisionBody* mCompoundBody; CollisionBody* mCompoundBody;
CollisionBody* mTriangleBody; CollisionBody* mTriangleBody;
@ -128,7 +127,6 @@ class TestRaycast : public Test {
SphereShape* mSphereShape; SphereShape* mSphereShape;
CapsuleShape* mCapsuleShape; CapsuleShape* mCapsuleShape;
ConvexMeshShape* mConvexMeshShape; ConvexMeshShape* mConvexMeshShape;
ConvexMeshShape* mConvexMeshShapeEdgesInfo;
TriangleShape* mTriangleShape; TriangleShape* mTriangleShape;
ConcaveShape* mConcaveMeshShape; ConcaveShape* mConcaveMeshShape;
HeightFieldShape* mHeightFieldShape; HeightFieldShape* mHeightFieldShape;
@ -138,7 +136,6 @@ class TestRaycast : public Test {
ProxyShape* mSphereProxyShape; ProxyShape* mSphereProxyShape;
ProxyShape* mCapsuleProxyShape; ProxyShape* mCapsuleProxyShape;
ProxyShape* mConvexMeshProxyShape; ProxyShape* mConvexMeshProxyShape;
ProxyShape* mConvexMeshProxyShapeEdgesInfo;
ProxyShape* mCompoundSphereProxyShape; ProxyShape* mCompoundSphereProxyShape;
ProxyShape* mCompoundCapsuleProxyShape; ProxyShape* mCompoundCapsuleProxyShape;
ProxyShape* mTriangleProxyShape; ProxyShape* mTriangleProxyShape;
@ -152,6 +149,11 @@ class TestRaycast : public Test {
std::vector<uint> mConcaveMeshIndices; std::vector<uint> mConcaveMeshIndices;
TriangleVertexArray* mConcaveMeshVertexArray; TriangleVertexArray* mConcaveMeshVertexArray;
float mHeightFieldData[100]; float mHeightFieldData[100];
PolygonVertexArray::PolygonFace mPolygonFaces[6];
PolygonVertexArray* mPolygonVertexArray;
PolyhedronMesh* mPolyhedronMesh;
Vector3 mPolyhedronVertices[8];
int mPolyhedronIndices[4 * 6];
public : public :
@ -175,7 +177,6 @@ class TestRaycast : public Test {
mSphereBody = mWorld->createCollisionBody(mBodyTransform); mSphereBody = mWorld->createCollisionBody(mBodyTransform);
mCapsuleBody = mWorld->createCollisionBody(mBodyTransform); mCapsuleBody = mWorld->createCollisionBody(mBodyTransform);
mConvexMeshBody = mWorld->createCollisionBody(mBodyTransform); mConvexMeshBody = mWorld->createCollisionBody(mBodyTransform);
mConvexMeshBodyEdgesInfo = mWorld->createCollisionBody(mBodyTransform);
mCylinderBody = mWorld->createCollisionBody(mBodyTransform); mCylinderBody = mWorld->createCollisionBody(mBodyTransform);
mCompoundBody = mWorld->createCollisionBody(mBodyTransform); mCompoundBody = mWorld->createCollisionBody(mBodyTransform);
mTriangleBody = mWorld->createCollisionBody(mBodyTransform); mTriangleBody = mWorld->createCollisionBody(mBodyTransform);
@ -200,51 +201,47 @@ class TestRaycast : public Test {
const Vector3 triangleVertex1(100, 100, 0); const Vector3 triangleVertex1(100, 100, 0);
const Vector3 triangleVertex2(105, 100, 0); const Vector3 triangleVertex2(105, 100, 0);
const Vector3 triangleVertex3(100, 103, 0); const Vector3 triangleVertex3(100, 103, 0);
mTriangleShape = new TriangleShape(triangleVertex1, triangleVertex2, triangleVertex3); Vector3 triangleVerticesNormals[3] = {Vector3(0, 0, 1), Vector3(0, 0, 1), Vector3(0, 0, 1)};
mTriangleShape = new TriangleShape(triangleVertex1, triangleVertex2, triangleVertex3, triangleVerticesNormals, 0, 0);
mTriangleProxyShape = mTriangleBody->addCollisionShape(mTriangleShape, mShapeTransform); mTriangleProxyShape = mTriangleBody->addCollisionShape(mTriangleShape, mShapeTransform);
mCapsuleShape = new CapsuleShape(2, 5); mCapsuleShape = new CapsuleShape(2, 5);
mCapsuleProxyShape = mCapsuleBody->addCollisionShape(mCapsuleShape, mShapeTransform); mCapsuleProxyShape = mCapsuleBody->addCollisionShape(mCapsuleShape, mShapeTransform);
// TODO : Create convex mesh shape with new way (polyhedron mesh) to add test again // TODO : Create convex mesh shape with new way (polyhedron mesh) to add test again
// Box of dimension (2, 3, 4) // Box of extents (2, 3, 4)
/*mConvexMeshShape = new ConvexMeshShape(0.0); mPolyhedronVertices[0] = Vector3(-2, -3, -4);
mConvexMeshShape->addVertex(Vector3(-2, -3, -4)); mPolyhedronVertices[1] = Vector3(2, -3, -4);
mConvexMeshShape->addVertex(Vector3(2, -3, -4)); mPolyhedronVertices[2] = Vector3(2, -3, 4);
mConvexMeshShape->addVertex(Vector3(2, -3, 4)); mPolyhedronVertices[3] = Vector3(-2, -3, 4);
mConvexMeshShape->addVertex(Vector3(-2, -3, 4)); mPolyhedronVertices[4] = Vector3(-2, 3, -4);
mConvexMeshShape->addVertex(Vector3(-2, 3, -4)); mPolyhedronVertices[5] = Vector3(2, 3, -4);
mConvexMeshShape->addVertex(Vector3(2, 3, -4)); mPolyhedronVertices[6] = Vector3(2, 3, 4);
mConvexMeshShape->addVertex(Vector3(2, 3, 4)); mPolyhedronVertices[7] = Vector3(-2, 3, 4);
mConvexMeshShape->addVertex(Vector3(-2, 3, 4));
mConvexMeshProxyShape = mConvexMeshBody->addCollisionShape(mConvexMeshShape, mShapeTransform);
mConvexMeshShapeEdgesInfo = new ConvexMeshShape(0.0); mPolyhedronIndices[0] = 0; mPolyhedronIndices[1] = 1; mPolyhedronIndices[2] = 2; mPolyhedronIndices[3] = 3;
mConvexMeshShapeEdgesInfo->addVertex(Vector3(-2, -3, -4)); mPolyhedronIndices[4] = 1; mPolyhedronIndices[5] = 5; mPolyhedronIndices[6] = 6; mPolyhedronIndices[7] = 2;
mConvexMeshShapeEdgesInfo->addVertex(Vector3(2, -3, -4)); mPolyhedronIndices[8] = 0; mPolyhedronIndices[9] = 4; mPolyhedronIndices[10] = 5; mPolyhedronIndices[11] = 1;
mConvexMeshShapeEdgesInfo->addVertex(Vector3(2, -3, 4)); mPolyhedronIndices[12] = 0; mPolyhedronIndices[13] = 3; mPolyhedronIndices[14] = 7; mPolyhedronIndices[15] = 4;
mConvexMeshShapeEdgesInfo->addVertex(Vector3(-2, -3, 4)); mPolyhedronIndices[16] = 3; mPolyhedronIndices[17] = 2; mPolyhedronIndices[18] = 6; mPolyhedronIndices[19] = 7;
mConvexMeshShapeEdgesInfo->addVertex(Vector3(-2, 3, -4)); mPolyhedronIndices[20] = 2; mPolyhedronIndices[21] = 5; mPolyhedronIndices[22] = 4; mPolyhedronIndices[23] = 7;
mConvexMeshShapeEdgesInfo->addVertex(Vector3(2, 3, -4));
mConvexMeshShapeEdgesInfo->addVertex(Vector3(2, 3, 4)); // Polygon faces descriptions for the polyhedron
mConvexMeshShapeEdgesInfo->addVertex(Vector3(-2, 3, 4)); for (int f=0; f < 8; f++) {
mConvexMeshShapeEdgesInfo->addEdge(0, 1); PolygonVertexArray::PolygonFace& face = mPolygonFaces[f];
mConvexMeshShapeEdgesInfo->addEdge(1, 2); face.indexBase = f * 4;
mConvexMeshShapeEdgesInfo->addEdge(2, 3); face.nbVertices = 4;
mConvexMeshShapeEdgesInfo->addEdge(0, 3); }
mConvexMeshShapeEdgesInfo->addEdge(4, 5);
mConvexMeshShapeEdgesInfo->addEdge(5, 6); // Create the polygon vertex array
mConvexMeshShapeEdgesInfo->addEdge(6, 7); mPolygonVertexArray = new PolygonVertexArray(8, mPolyhedronVertices, sizeof(Vector3),
mConvexMeshShapeEdgesInfo->addEdge(4, 7); mPolyhedronIndices, sizeof(int), 6, mPolygonFaces,
mConvexMeshShapeEdgesInfo->addEdge(0, 4); PolygonVertexArray::VertexDataType::VERTEX_FLOAT_TYPE,
mConvexMeshShapeEdgesInfo->addEdge(1, 5); PolygonVertexArray::IndexDataType::INDEX_INTEGER_TYPE);
mConvexMeshShapeEdgesInfo->addEdge(2, 6);
mConvexMeshShapeEdgesInfo->addEdge(3, 7); mPolyhedronMesh = new PolyhedronMesh(mPolygonVertexArray);
mConvexMeshShapeEdgesInfo->setIsEdgesInformationUsed(true); mConvexMeshShape = new ConvexMeshShape(mPolyhedronMesh);
mConvexMeshProxyShapeEdgesInfo = mConvexMeshBodyEdgesInfo->addCollisionShape( mConvexMeshProxyShape = mConvexMeshBody->addCollisionShape(mConvexMeshShape, mShapeTransform);
mConvexMeshShapeEdgesInfo,
mShapeTransform);
*/
// Compound shape is a cylinder and a sphere // Compound shape is a cylinder and a sphere
Vector3 positionShape2(Vector3(4, 2, -3)); Vector3 positionShape2(Vector3(4, 2, -3));
@ -300,8 +297,7 @@ class TestRaycast : public Test {
mBoxProxyShape->setCollisionCategoryBits(CATEGORY1); mBoxProxyShape->setCollisionCategoryBits(CATEGORY1);
mSphereProxyShape->setCollisionCategoryBits(CATEGORY1); mSphereProxyShape->setCollisionCategoryBits(CATEGORY1);
mCapsuleProxyShape->setCollisionCategoryBits(CATEGORY1); mCapsuleProxyShape->setCollisionCategoryBits(CATEGORY1);
//mConvexMeshProxyShape->setCollisionCategoryBits(CATEGORY2); mConvexMeshProxyShape->setCollisionCategoryBits(CATEGORY2);
//mConvexMeshProxyShapeEdgesInfo->setCollisionCategoryBits(CATEGORY2);
mCompoundSphereProxyShape->setCollisionCategoryBits(CATEGORY2); mCompoundSphereProxyShape->setCollisionCategoryBits(CATEGORY2);
mCompoundCapsuleProxyShape->setCollisionCategoryBits(CATEGORY2); mCompoundCapsuleProxyShape->setCollisionCategoryBits(CATEGORY2);
mTriangleProxyShape->setCollisionCategoryBits(CATEGORY1); mTriangleProxyShape->setCollisionCategoryBits(CATEGORY1);
@ -314,13 +310,15 @@ class TestRaycast : public Test {
delete mBoxShape; delete mBoxShape;
delete mSphereShape; delete mSphereShape;
delete mCapsuleShape; delete mCapsuleShape;
//delete mConvexMeshShape; delete mConvexMeshShape;
//delete mConvexMeshShapeEdgesInfo;
delete mTriangleShape; delete mTriangleShape;
delete mConcaveMeshShape; delete mConcaveMeshShape;
delete mHeightFieldShape; delete mHeightFieldShape;
delete mConcaveMeshVertexArray; delete mConcaveMeshVertexArray;
delete mPolygonVertexArray;
delete mPolyhedronMesh;
} }
/// Run the tests /// Run the tests
@ -1299,7 +1297,6 @@ class TestRaycast : public Test {
/// CollisionWorld::raycast() methods. /// CollisionWorld::raycast() methods.
void testConvexMesh() { void testConvexMesh() {
/*
// ----- Test feedback data ----- // // ----- Test feedback data ----- //
Vector3 point1 = mLocalShapeToWorld * Vector3(1 , 2, 6); Vector3 point1 = mLocalShapeToWorld * Vector3(1 , 2, 6);
Vector3 point2 = mLocalShapeToWorld * Vector3(1, 2, -4); Vector3 point2 = mLocalShapeToWorld * Vector3(1, 2, -4);
@ -1339,16 +1336,6 @@ class TestRaycast : public Test {
test(approxEqual(raycastInfo2.worldPoint.y, hitPoint.y, epsilon)); test(approxEqual(raycastInfo2.worldPoint.y, hitPoint.y, epsilon));
test(approxEqual(raycastInfo2.worldPoint.z, hitPoint.z, epsilon)); test(approxEqual(raycastInfo2.worldPoint.z, hitPoint.z, epsilon));
// ProxyCollisionShape::raycast()
RaycastInfo raycastInfo3;
test(mConvexMeshBodyEdgesInfo->raycast(ray, raycastInfo3));
test(raycastInfo3.body == mConvexMeshBodyEdgesInfo);
test(raycastInfo3.proxyShape == mConvexMeshProxyShapeEdgesInfo);
test(approxEqual(raycastInfo3.hitFraction, decimal(0.2), epsilon));
test(approxEqual(raycastInfo3.worldPoint.x, hitPoint.x, epsilon));
test(approxEqual(raycastInfo3.worldPoint.y, hitPoint.y, epsilon));
test(approxEqual(raycastInfo3.worldPoint.z, hitPoint.z, epsilon));
// ProxyCollisionShape::raycast() // ProxyCollisionShape::raycast()
RaycastInfo raycastInfo4; RaycastInfo raycastInfo4;
test(mConvexMeshProxyShape->raycast(ray, raycastInfo4)); test(mConvexMeshProxyShape->raycast(ray, raycastInfo4));
@ -1359,16 +1346,6 @@ class TestRaycast : public Test {
test(approxEqual(raycastInfo4.worldPoint.y, hitPoint.y, epsilon)); test(approxEqual(raycastInfo4.worldPoint.y, hitPoint.y, epsilon));
test(approxEqual(raycastInfo4.worldPoint.z, hitPoint.z, epsilon)); test(approxEqual(raycastInfo4.worldPoint.z, hitPoint.z, epsilon));
// ProxyCollisionShape::raycast()
RaycastInfo raycastInfo5;
test(mConvexMeshProxyShapeEdgesInfo->raycast(ray, raycastInfo5));
test(raycastInfo5.body == mConvexMeshBodyEdgesInfo);
test(raycastInfo5.proxyShape == mConvexMeshProxyShapeEdgesInfo);
test(approxEqual(raycastInfo5.hitFraction, decimal(0.2), epsilon));
test(approxEqual(raycastInfo5.worldPoint.x, hitPoint.x, epsilon));
test(approxEqual(raycastInfo5.worldPoint.y, hitPoint.y, epsilon));
test(approxEqual(raycastInfo5.worldPoint.z, hitPoint.z, epsilon));
Ray ray1(mLocalShapeToWorld * Vector3(0, 0, 0), mLocalShapeToWorld * Vector3(5, 7, -1)); Ray ray1(mLocalShapeToWorld * Vector3(0, 0, 0), mLocalShapeToWorld * Vector3(5, 7, -1));
Ray ray2(mLocalShapeToWorld * Vector3(5, 11, 7), mLocalShapeToWorld * Vector3(17, 29, 28)); Ray ray2(mLocalShapeToWorld * Vector3(5, 11, 7), mLocalShapeToWorld * Vector3(17, 29, 28));
Ray ray3(mLocalShapeToWorld * Vector3(1, 2, 3), mLocalShapeToWorld * Vector3(-11, 2, 24)); Ray ray3(mLocalShapeToWorld * Vector3(1, 2, 3), mLocalShapeToWorld * Vector3(-11, 2, 24));
@ -1387,10 +1364,9 @@ class TestRaycast : public Test {
Ray ray16(mLocalShapeToWorld * Vector3(-1, 2, -7), mLocalShapeToWorld * Vector3(-1, 2, 30)); Ray ray16(mLocalShapeToWorld * Vector3(-1, 2, -7), mLocalShapeToWorld * Vector3(-1, 2, 30));
// ----- Test raycast miss ----- // // ----- Test raycast miss ----- //
RaycastInfo raycastInfo3;
test(!mConvexMeshBody->raycast(ray1, raycastInfo3)); test(!mConvexMeshBody->raycast(ray1, raycastInfo3));
test(!mConvexMeshBodyEdgesInfo->raycast(ray1, raycastInfo3));
test(!mConvexMeshProxyShape->raycast(ray1, raycastInfo3)); test(!mConvexMeshProxyShape->raycast(ray1, raycastInfo3));
test(!mConvexMeshProxyShapeEdgesInfo->raycast(ray1, raycastInfo3));
mCallback.reset(); mCallback.reset();
mWorld->raycast(ray1, &mCallback); mWorld->raycast(ray1, &mCallback);
test(!mCallback.isHit); test(!mCallback.isHit);
@ -1402,73 +1378,55 @@ class TestRaycast : public Test {
test(!mCallback.isHit); test(!mCallback.isHit);
test(!mConvexMeshBody->raycast(ray2, raycastInfo3)); test(!mConvexMeshBody->raycast(ray2, raycastInfo3));
test(!mConvexMeshBodyEdgesInfo->raycast(ray2, raycastInfo3));
test(!mConvexMeshProxyShape->raycast(ray2, raycastInfo3)); test(!mConvexMeshProxyShape->raycast(ray2, raycastInfo3));
test(!mConvexMeshProxyShapeEdgesInfo->raycast(ray2, raycastInfo3));
mCallback.reset(); mCallback.reset();
mWorld->raycast(ray2, &mCallback); mWorld->raycast(ray2, &mCallback);
test(!mCallback.isHit); test(!mCallback.isHit);
test(!mConvexMeshBody->raycast(ray3, raycastInfo3)); test(!mConvexMeshBody->raycast(ray3, raycastInfo3));
test(!mConvexMeshBodyEdgesInfo->raycast(ray3, raycastInfo3));
test(!mConvexMeshProxyShape->raycast(ray3, raycastInfo3)); test(!mConvexMeshProxyShape->raycast(ray3, raycastInfo3));
test(!mConvexMeshProxyShapeEdgesInfo->raycast(ray3, raycastInfo3));
mCallback.reset(); mCallback.reset();
mWorld->raycast(ray3, &mCallback); mWorld->raycast(ray3, &mCallback);
test(!mCallback.isHit); test(!mCallback.isHit);
test(!mConvexMeshBody->raycast(ray4, raycastInfo3)); test(!mConvexMeshBody->raycast(ray4, raycastInfo3));
test(!mConvexMeshBodyEdgesInfo->raycast(ray4, raycastInfo3));
test(!mConvexMeshProxyShape->raycast(ray4, raycastInfo3)); test(!mConvexMeshProxyShape->raycast(ray4, raycastInfo3));
test(!mConvexMeshProxyShapeEdgesInfo->raycast(ray4, raycastInfo3));
mCallback.reset(); mCallback.reset();
mWorld->raycast(ray4, &mCallback); mWorld->raycast(ray4, &mCallback);
test(!mCallback.isHit); test(!mCallback.isHit);
test(!mConvexMeshBody->raycast(ray5, raycastInfo3)); test(!mConvexMeshBody->raycast(ray5, raycastInfo3));
test(!mConvexMeshBodyEdgesInfo->raycast(ray5, raycastInfo3));
test(!mConvexMeshProxyShape->raycast(ray5, raycastInfo3)); test(!mConvexMeshProxyShape->raycast(ray5, raycastInfo3));
test(!mConvexMeshProxyShapeEdgesInfo->raycast(ray5, raycastInfo3));
mCallback.reset(); mCallback.reset();
mWorld->raycast(ray5, &mCallback); mWorld->raycast(ray5, &mCallback);
test(!mCallback.isHit); test(!mCallback.isHit);
test(!mConvexMeshBody->raycast(ray6, raycastInfo3)); test(!mConvexMeshBody->raycast(ray6, raycastInfo3));
test(!mConvexMeshBodyEdgesInfo->raycast(ray6, raycastInfo3));
test(!mConvexMeshProxyShape->raycast(ray6, raycastInfo3)); test(!mConvexMeshProxyShape->raycast(ray6, raycastInfo3));
test(!mConvexMeshProxyShapeEdgesInfo->raycast(ray6, raycastInfo3));
mCallback.reset(); mCallback.reset();
mWorld->raycast(ray6, &mCallback); mWorld->raycast(ray6, &mCallback);
test(!mCallback.isHit); test(!mCallback.isHit);
test(!mConvexMeshBody->raycast(ray7, raycastInfo3)); test(!mConvexMeshBody->raycast(ray7, raycastInfo3));
test(!mConvexMeshBodyEdgesInfo->raycast(ray7, raycastInfo3));
test(!mConvexMeshProxyShape->raycast(ray7, raycastInfo3)); test(!mConvexMeshProxyShape->raycast(ray7, raycastInfo3));
test(!mConvexMeshProxyShapeEdgesInfo->raycast(ray7, raycastInfo3));
mCallback.reset(); mCallback.reset();
mWorld->raycast(ray7, &mCallback); mWorld->raycast(ray7, &mCallback);
test(!mCallback.isHit); test(!mCallback.isHit);
test(!mConvexMeshBody->raycast(ray8, raycastInfo3)); test(!mConvexMeshBody->raycast(ray8, raycastInfo3));
test(!mConvexMeshBodyEdgesInfo->raycast(ray8, raycastInfo3));
test(!mConvexMeshProxyShape->raycast(ray8, raycastInfo3)); test(!mConvexMeshProxyShape->raycast(ray8, raycastInfo3));
test(!mConvexMeshProxyShapeEdgesInfo->raycast(ray8, raycastInfo3));
mCallback.reset(); mCallback.reset();
mWorld->raycast(ray8, &mCallback); mWorld->raycast(ray8, &mCallback);
test(!mCallback.isHit); test(!mCallback.isHit);
test(!mConvexMeshBody->raycast(ray9, raycastInfo3)); test(!mConvexMeshBody->raycast(ray9, raycastInfo3));
test(!mConvexMeshBodyEdgesInfo->raycast(ray9, raycastInfo3));
test(!mConvexMeshProxyShape->raycast(ray9, raycastInfo3)); test(!mConvexMeshProxyShape->raycast(ray9, raycastInfo3));
test(!mConvexMeshProxyShapeEdgesInfo->raycast(ray9, raycastInfo3));
mCallback.reset(); mCallback.reset();
mWorld->raycast(ray9, &mCallback); mWorld->raycast(ray9, &mCallback);
test(!mCallback.isHit); test(!mCallback.isHit);
test(!mConvexMeshBody->raycast(ray10, raycastInfo3)); test(!mConvexMeshBody->raycast(ray10, raycastInfo3));
test(!mConvexMeshBodyEdgesInfo->raycast(ray10, raycastInfo3));
test(!mConvexMeshProxyShape->raycast(ray10, raycastInfo3)); test(!mConvexMeshProxyShape->raycast(ray10, raycastInfo3));
test(!mConvexMeshProxyShapeEdgesInfo->raycast(ray10, raycastInfo3));
mCallback.reset(); mCallback.reset();
mWorld->raycast(ray10, &mCallback); mWorld->raycast(ray10, &mCallback);
test(!mCallback.isHit); test(!mCallback.isHit);
@ -1494,10 +1452,8 @@ class TestRaycast : public Test {
// ----- Test raycast hits ----- // // ----- Test raycast hits ----- //
test(mConvexMeshBody->raycast(ray11, raycastInfo3)); test(mConvexMeshBody->raycast(ray11, raycastInfo3));
test(mConvexMeshBodyEdgesInfo->raycast(ray11, raycastInfo3));
test(mConvexMeshProxyShape->raycast(ray11, raycastInfo3)); test(mConvexMeshProxyShape->raycast(ray11, raycastInfo3));
test(mConvexMeshProxyShapeEdgesInfo->raycast(ray11, raycastInfo3)); mCallback.reset();
mCallback.reset();
mWorld->raycast(ray11, &mCallback); mWorld->raycast(ray11, &mCallback);
test(mCallback.isHit); test(mCallback.isHit);
mCallback.reset(); mCallback.reset();
@ -1505,9 +1461,7 @@ class TestRaycast : public Test {
test(mCallback.isHit); test(mCallback.isHit);
test(mConvexMeshBody->raycast(ray12, raycastInfo3)); test(mConvexMeshBody->raycast(ray12, raycastInfo3));
test(mConvexMeshBodyEdgesInfo->raycast(ray12, raycastInfo3));
test(mConvexMeshProxyShape->raycast(ray12, raycastInfo3)); test(mConvexMeshProxyShape->raycast(ray12, raycastInfo3));
test(mConvexMeshProxyShapeEdgesInfo->raycast(ray12, raycastInfo3));
mCallback.reset(); mCallback.reset();
mWorld->raycast(ray12, &mCallback); mWorld->raycast(ray12, &mCallback);
test(mCallback.isHit); test(mCallback.isHit);
@ -1516,9 +1470,7 @@ class TestRaycast : public Test {
test(mCallback.isHit); test(mCallback.isHit);
test(mConvexMeshBody->raycast(ray13, raycastInfo3)); test(mConvexMeshBody->raycast(ray13, raycastInfo3));
test(mConvexMeshBodyEdgesInfo->raycast(ray13, raycastInfo3));
test(mConvexMeshProxyShape->raycast(ray13, raycastInfo3)); test(mConvexMeshProxyShape->raycast(ray13, raycastInfo3));
test(mConvexMeshProxyShapeEdgesInfo->raycast(ray13, raycastInfo3));
mCallback.reset(); mCallback.reset();
mWorld->raycast(ray13, &mCallback); mWorld->raycast(ray13, &mCallback);
test(mCallback.isHit); test(mCallback.isHit);
@ -1527,9 +1479,7 @@ class TestRaycast : public Test {
test(mCallback.isHit); test(mCallback.isHit);
test(mConvexMeshBody->raycast(ray14, raycastInfo3)); test(mConvexMeshBody->raycast(ray14, raycastInfo3));
test(mConvexMeshBodyEdgesInfo->raycast(ray14, raycastInfo3));
test(mConvexMeshProxyShape->raycast(ray14, raycastInfo3)); test(mConvexMeshProxyShape->raycast(ray14, raycastInfo3));
test(mConvexMeshProxyShapeEdgesInfo->raycast(ray14, raycastInfo3));
mCallback.reset(); mCallback.reset();
mWorld->raycast(ray14, &mCallback); mWorld->raycast(ray14, &mCallback);
test(mCallback.isHit); test(mCallback.isHit);
@ -1538,9 +1488,7 @@ class TestRaycast : public Test {
test(mCallback.isHit); test(mCallback.isHit);
test(mConvexMeshBody->raycast(ray15, raycastInfo3)); test(mConvexMeshBody->raycast(ray15, raycastInfo3));
test(mConvexMeshBodyEdgesInfo->raycast(ray15, raycastInfo3));
test(mConvexMeshProxyShape->raycast(ray15, raycastInfo3)); test(mConvexMeshProxyShape->raycast(ray15, raycastInfo3));
test(mConvexMeshProxyShapeEdgesInfo->raycast(ray15, raycastInfo3));
mCallback.reset(); mCallback.reset();
mWorld->raycast(ray15, &mCallback); mWorld->raycast(ray15, &mCallback);
test(mCallback.isHit); test(mCallback.isHit);
@ -1549,16 +1497,13 @@ class TestRaycast : public Test {
test(mCallback.isHit); test(mCallback.isHit);
test(mConvexMeshBody->raycast(ray16, raycastInfo3)); test(mConvexMeshBody->raycast(ray16, raycastInfo3));
test(mConvexMeshBodyEdgesInfo->raycast(ray16, raycastInfo3));
test(mConvexMeshProxyShape->raycast(ray16, raycastInfo3)); test(mConvexMeshProxyShape->raycast(ray16, raycastInfo3));
test(mConvexMeshProxyShapeEdgesInfo->raycast(ray16, raycastInfo3));
mCallback.reset(); mCallback.reset();
mWorld->raycast(ray16, &mCallback); mWorld->raycast(ray16, &mCallback);
test(mCallback.isHit); test(mCallback.isHit);
mCallback.reset(); mCallback.reset();
mWorld->raycast(Ray(ray16.point1, ray16.point2, decimal(0.8)), &mCallback); mWorld->raycast(Ray(ray16.point1, ray16.point2, decimal(0.8)), &mCallback);
test(mCallback.isHit); test(mCallback.isHit);
*/
} }
/// Test the CollisionBody::raycast() and /// Test the CollisionBody::raycast() and

View File

@ -40,13 +40,6 @@ ConvexMesh::ConvexMesh(const openglframework::Vector3 &position,
// Compute the scaling matrix // Compute the scaling matrix
mScalingMatrix = openglframework::Matrix4::identity(); mScalingMatrix = openglframework::Matrix4::identity();
// Vertex and Indices array for the triangle mesh (data in shared and not copied)
/*mPolygonVertexArray =
new rp3d::TriangleVertexArray(getNbVertices(), &(mVertices[0]), sizeof(openglframework::Vector3),
getNbFaces(0), &(mIndices[0][0]), sizeof(int),
rp3d::TriangleVertexArray::VertexDataType::VERTEX_FLOAT_TYPE,
rp3d::TriangleVertexArray::IndexDataType::INDEX_INTEGER_TYPE);*/
// Polygon faces descriptions for the polyhedron // Polygon faces descriptions for the polyhedron
mPolygonFaces = new rp3d::PolygonVertexArray::PolygonFace[getNbFaces(0)]; mPolygonFaces = new rp3d::PolygonVertexArray::PolygonFace[getNbFaces(0)];
rp3d::PolygonVertexArray::PolygonFace* face = mPolygonFaces; rp3d::PolygonVertexArray::PolygonFace* face = mPolygonFaces;