duck

duck

Nov 1st, 2010
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.20 KB | None | 0 0
  1.        
  2.     if (Physics.Raycast(camera.ScreenPointToRay(Input.mousePosition), out hit))
  3.     {
  4.        
  5.         MeshCollider meshCollider = hit.collider as MeshCollider;
  6.         if (meshCollider == null || meshCollider.sharedMesh == null)
  7.         {
  8.                 return;
  9.         }
  10.                
  11.         Mesh mesh = meshCollider.sharedMesh;
  12.         int[] triangles = mesh.triangles;
  13.            
  14.         int v0 = triangles[hit.triangleIndex * 3 + 0];
  15.         int v1 = triangles[hit.triangleIndex * 3 + 1];
  16.         int v2 = triangles[hit.triangleIndex * 3 + 2];
  17.  
  18.         List<int> newTriangles = new List<int>();
  19.  
  20.         for (int i = 0; i < triangles.Length/3; ++i)
  21.         {
  22.             c0 = triangles[i*3 + 0];
  23.             c1 = triangles[i*3 + 1];
  24.             c2 = triangles[i*3 + 2];
  25.            
  26.             int count = 0;
  27.             if (c0 == v0 || c0 == v1 || c0 == v2) { count++; }
  28.             if (c1 == v0 || c1 == v1 || c1 == v2) { count++; }
  29.             if (c2 == v0 || c2 == v1 || c2 == v2) { count++; }
  30.            
  31.             if (count == 2)
  32.             {
  33.                 // it's a neighbouring triangle!
  34.                 newTriangles.Add(i);
  35.             }
  36.         }
  37.     }
Advertisement
Add Comment
Please, Sign In to add comment