Esempio n. 1
0
 public static void FindNearestResource(Vector3 unitPosition, Action<Resource> callBack)
 {
     FindNearestResourceQueryRequest request = new FindNearestResourceQueryRequest() { location = unitPosition, CallBack = callBack};
     Instance.FindNearestResourceQueryQueue.Enqueue(request);
     Instance.TryProcessNextFindResource();
 }
Esempio n. 2
0
    IEnumerator QueryResources(FindNearestResourceQueryRequest request)
    {
        var resources = FindObjectsOfType<Resource>();
        if(resources != null)
        {
            float minDistance = float.MaxValue;
            Resource closestResource = null;
            foreach(var res in resources)
            {
                float dist = Vector2.Distance(request.location, res.transform.position);
                if (dist < minDistance)
                {
                    minDistance = dist;
                    closestResource = res;
                }
            }

            yield return null;
            request.CallBack(closestResource);
            Instance.IsProcessingResourceQuery = false;
            Instance.TryProcessNextFindResource();
        }
    }