Esempio n. 1
0
    public Transform ReturnNearest(Facility facility, Vector3 pos)
    {
        float     minDistance     = float.MaxValue;
        Transform nearestLocation = null;

        GameObject[] objectsArray = null;

        switch (facility)
        {
        case Facility.WaterSource:
            objectsArray = waterSources;
            break;

        case Facility.Chair:
            objectsArray = chairs;
            break;

        case Facility.ExitLoc:
            objectsArray = exitLocations;
            break;

        case Facility.Cashier:
            objectsArray = cashiers;
            break;

        default:
            break;
        }

        for (int i = 0; i < objectsArray.Length; i++)
        {
            //TODO clean for performance
            FacilityObject facilityObject = objectsArray[i].GetComponent <FacilityObject>();

            if (facilityObject.IsInUse())
            {
                continue;
            }

            float sqrDist = Vector3.SqrMagnitude(pos - objectsArray[i].transform.position);
            if (sqrDist < minDistance)
            {
                minDistance     = sqrDist;
                nearestLocation = objectsArray[i].transform;
            }
        }

        return(nearestLocation);
    }