//the path isnt caluculated immediatly but is done over the duration of frames
    //A method will be fed into the Action variable, but it written as an array as there will be more
    //than one vector calculated
    public static void RequestPath(Vector3 pathStart, Vector3 pathEnd, Action <Vector3[], bool> callback)
    {
        PathRequestDFS newRequest = new PathRequestDFS(pathStart, pathEnd, callback);

        instance.pathRequestQueue.Enqueue(newRequest);
        instance.TryProcessNext();
    }
 //check to see if we are already processing a path, and if not then process the next path
 void TryProcessNext()
 {
     if (!isProcessingPath && pathRequestQueue.Count > 0)
     {
         //get the first item of the request
         currentPathRequest = pathRequestQueue.Dequeue();
         isProcessingPath   = true;
         pathfinding.StartFindPath(currentPathRequest.pathStart, currentPathRequest.pathEnd);
     }
 }