/** * \brief This is how we figure out what face is clicked. */ public bool FaceCheck(Vector3 pos) { Ray ray = Camera.main.ScreenPointToRay(pos); RaycastHit hit; if (Physics.Raycast(ray.origin, ray.direction, out hit)) { pb_Object hitpb = hit.transform.gameObject.GetComponent <pb_Object>(); if (hitpb == null) { return(false); } Mesh m = hitpb.msh; int[] tri = new int[3] { m.triangles[hit.triangleIndex * 3 + 0], m.triangles[hit.triangleIndex * 3 + 1], m.triangles[hit.triangleIndex * 3 + 2] }; currentSelection.pb = hitpb; return(hitpb.FaceWithTriangle(tri, out currentSelection.face)); } return(false); }
bool FaceRaycast(Vector2 mouse, out pb_Object pb, out pb_Face face) { var ray = Camera.main.ScreenPointToRay(mouse); RaycastHit rayHit; if (Physics.Raycast(ray.origin, ray.direction, out rayHit)) { pb = rayHit.transform.gameObject.GetComponent <pb_Object>(); if (pb == null) { face = null; return(false); } Mesh m = pb.GetComponent <MeshFilter>().sharedMesh; int[] tri = new int[3] { m.triangles[rayHit.triangleIndex * 3 + 0], m.triangles[rayHit.triangleIndex * 3 + 1], m.triangles[rayHit.triangleIndex * 3 + 2] }; return(pb.FaceWithTriangle(tri, out face)); } pb = null; face = null; return(false); }