Beispiel #1
0
    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));
    }