// Starts finding a path. The callback calls a method with the resulting path waypoints and success state.
        public void StartFindPath(Vector3 startPosition, Vector3 targetPosition, LayerMask allowedTerrain, Action <Waypoint[], PathStatus> callback)
        {
            Node startNode  = _nodeNetwork.GetNodeFromWorldPosition(startPosition, allowedTerrain, true);
            Node targetNode = _nodeNetwork.GetNodeFromWorldPosition(targetPosition, int.MaxValue, true);

            if (startNode == null)
            {
                startNode = _nodeNetwork.GetShiftedNodeFromWorldPosition(startPosition, allowedTerrain, false);
            }

            StartFindPath(startNode, targetNode, allowedTerrain, callback);
            //StartCoroutine(FindPath(startPosition, targetPosition, allowedTerrain, callback, false));
        }