Browse Source

Fixed mesh hit detection broken by previous commit

Ivan Safrin 11 years ago
parent
commit
77aa0c6eec
1 changed files with 16 additions and 5 deletions
  1. 16 5
      Core/Contents/Source/PolySceneMesh.cpp

+ 16 - 5
Core/Contents/Source/PolySceneMesh.cpp

@@ -326,13 +326,24 @@ bool SceneMesh::customHitDetection(const Ray &ray) {
 	transformedRay.origin = adjustedMatrix * ray.origin;
 	transformedRay.origin = adjustedMatrix * ray.origin;
 	transformedRay.direction = adjustedMatrix.rotateVector(ray.direction);
 	transformedRay.direction = adjustedMatrix.rotateVector(ray.direction);
 	
 	
-	for(int i=0; i < mesh->getVertexCount(); i+=3) {
-        if(i+2 < mesh->getVertexCount()) {
-           if(transformedRay.polygonIntersect(mesh->getVertex(i), mesh->getVertex(i+1), mesh->getVertex(i+2))) {
-                return true;
+    if(mesh->indexedMesh) {
+        for(int i=0; i < mesh->getIndexCount(); i+=3) {
+            if(i+2 < mesh->getIndexCount()) {
+                if(transformedRay.polygonIntersect(mesh->getIndexedVertex(i), mesh->getIndexedVertex(i+1), mesh->getIndexedVertex(i+2))) {
+                    return true;
+                }
             }
             }
         }
         }
-	}
+        
+    } else {
+        for(int i=0; i < mesh->getVertexCount(); i+=3) {
+            if(i+2 < mesh->getVertexCount()) {
+               if(transformedRay.polygonIntersect(mesh->getVertex(i), mesh->getVertex(i+1), mesh->getVertex(i+2))) {
+                    return true;
+                }
+            }
+        }
+    }
 	
 	
 	return false;
 	return false;
 }
 }