public Transform GetIdealMovementPosition(Vector3 pVector)
    {
        int markerIndex = 0;

        sortedMarkers = new List <SortedAIMarkerData>(allLegalMarkers.Count);

        for (int i = 0; i < allLegalMarkers.Count; i++)
        {
            if (allLegalMarkers[i] != null)
            {
                SortedAIMarkerData oData = new SortedAIMarkerData();

                oData.markerObject = allLegalMarkers[i].gameObject;
                oData.distance     = Vector3.Distance(pVector, allLegalMarkers[i].gameObject.transform.position);
                sortedMarkers.Add(oData);

                //Debug.Log(" Adding data to the list!!!!!");
            }
        }

        sortedMarkers.Sort(SortByDistance);

        markerIndex = Random.Range(0, Mathf.FloorToInt(sortedMarkers.Count * .5f));


        if (sortedMarkers[markerIndex].markerObject == null)
        {
            markerIndex = 0;
        }


        return(sortedMarkers[markerIndex].markerObject.transform);
    }
 //*** Sort thing classes by distance
 static int SortByDistance(SortedAIMarkerData p1, SortedAIMarkerData p2)
 {
     return(p1.distance.CompareTo(p2.distance));
 }