Update raycasting test code for convex mesh and remove commented code
This commit is contained in:
parent
624e01b595
commit
e725af80b6
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user