static Tuple <Tile, float, int, Vector3[]> getClosestTile(List <Tile> tiles, Vector3 mousePos) { Tile closest = null; Vector3[] closestEdgeVec = new Vector3[2]; int closestEdge = 0; float minDist = Mathf.Infinity; foreach (Tile t in tiles) { float dist = Vector2.Distance(t.centre, mousePos); if (dist < minDist) { closest = t; minDist = dist; } } float minDistToEdge = Mathf.Infinity; for (int i = 0; i < closest.edges.Count; ++i) { // foreach(Vector3 v in closest.edges[i]) // { // Debug.Log(v); // } float distToEdge = Vector2.Distance(HelperFunctionsClass.EdgeCentre(closest.edges[i]), mousePos); if (distToEdge < minDistToEdge) { minDistToEdge = distToEdge; closestEdgeVec = closest.edges[i]; closestEdge = i + 1; } } return(new Tuple <Tile, float, int, Vector3[]>(closest, minDist, closestEdge, closestEdgeVec)); }