public PathRequest(IPathRequester pathRequester, PathValues pathValues, Func <Vector2?> destinationCreation, Action <bool> pathCompleteCallback)
 {
     DestinationCreation  = destinationCreation;
     PathValues           = pathValues;
     PathCompleteCallback = pathCompleteCallback;
     PathRequester        = pathRequester;
 }
 public PathRequest(IPathRequester pathRequester, PathValues pathValues, Func <Vector2[]> pathCreation, Action <bool> pathCompleteCallback)
 {
     PathCreation         = pathCreation;
     PathValues           = pathValues;
     PathRequester        = pathRequester;
     PathCompleteCallback = pathCompleteCallback;
 }
        public PathRequest(IPathRequester pathRequester, PathfindingMarker startMarker, PathfindingMarker endMarker, float maxJumpHeight)
        {
            this.pathRequester = pathRequester;
            this.startMarker   = startMarker;
            this.endMarker     = endMarker;

            this.maxJumpHeight = maxJumpHeight;
        }
        public MultiPathRequest(IPathRequester pathRequester, List <PathfindingMarker> markers, float maxJumpHeight)
        {
            this.pathRequester = pathRequester;

            this.markers = markers;

            this.maxJumpHeight = maxJumpHeight;
        }
        private void Complete()
        {
            IPathRequester pathRequester = _pathRequest.pathRequester;

            Logging.Log($"Pathfinder #{PathfinderIndex} completed {(_path.Count > 0 ? "Successfully" : "Unsuccessfully")}. Checked {_totalChecks} markers for {pathRequester}. It took {_framesTaken + 1} frames to complete.");

            pathRequester.PathCallback(Path, PathfinderIndex);
            _pathfindingPerfMarker.End();
        }
Example #6
0
        public void RequestPath(IPathRequester pathRequester, Vector3 startPoint, Vector3 endPoint, float maxJumpHeight)
        {
            PathfindingMarker startMarker = _grid.FindNearestMarker(startPoint);
            PathfindingMarker endMarker   = _grid.FindNearestMarker(endPoint);

            Logging.Log($"Trying to move from {startMarker.name} to {endMarker.name}!");

            RequestPath(pathRequester, startMarker, endMarker, maxJumpHeight);
        }
Example #7
0
        public void RequestPath(IPathRequester requester, Vector3 start, Vector3 target, float radius = 0f)
        {
            PathRequest pathRequest = new PathRequest();

            pathRequest.m_Requester   = requester;
            pathRequest.m_Radius      = radius;
            pathRequest.m_StartPos    = start;
            pathRequest.m_TargetPos   = target;
            pathRequest.m_RequestTime = Time.time;
            pathRequest.m_NavMeshPath = new NavMeshPath();
            this.m_Requests.Add(pathRequest);
        }
Example #8
0
        private void FindPathsViaCoroutines()
        {
            int pathRequestsCount = _pathRequests.Count;

            if (pathRequestsCount != 0)
            {
                Logging.Log($"Searching for {pathRequestsCount} paths");

                foreach (PathRequest pathRequest in _pathRequests)
                {
                    const int defaultIndex  = 0;
                    var       newPathfinder = AStarMarkerPathFinder.CreateInstance(pathRequest, pathfindingChecksPerFramePerFinder, defaultIndex);
                    pathRequest.pathRequester.CurrentPathfinders = new IPathfinder[] { newPathfinder };

                    StartPathfinderCoroutine(newPathfinder);
                }
                _pathRequests.Clear();
            }


            int multiPathRequestsCount = _multiPathRequests.Count;

            if (multiPathRequestsCount != 0)
            {
                Logging.Log($"Searching for {multiPathRequestsCount} multiPaths");

                foreach (MultiPathRequest multiPathRequest in _multiPathRequests)
                {
                    int requestAmount = multiPathRequest.markers.Count - 1;
                    Logging.Log($"Multipath has {requestAmount} number of requests");

                    IPathRequester pathRequester = multiPathRequest.pathRequester;

                    for (var index = 0; index < requestAmount; index++)
                    {
                        PathfindingMarker currStartMarker = multiPathRequest.markers[index];
                        PathfindingMarker currEndMarker   = multiPathRequest.markers[index + 1];

                        var newPathRequest = new PathRequest(pathRequester, currStartMarker, currEndMarker, multiPathRequest.maxJumpHeight);

                        var newPathfinder = AStarMarkerPathFinder.CreateInstance(newPathRequest, pathfindingChecksPerFramePerFinder, index);

                        pathRequester.CurrentPathfinders[index] = newPathfinder;

                        StartPathfinderCoroutine(newPathfinder);
                    }
                }
            }

            _multiPathRequests.Clear();
        }
Example #9
0
        public void RequestMultiPath(IPathRequester pathRequester, Vector3 startPoint, IEnumerable <Vector3> listOfPoints, float maxJumpHeight)
        {
            PathfindingMarker startMarker = _grid.FindNearestMarker(startPoint);

            if (startMarker == null)
            {
                Logging.LogWarning("Request MultiPath marker is null!");
                return;
            }
            List <PathfindingMarker> listOfMarkersToGoThrough = listOfPoints.Select(point => _grid.FindNearestMarker(point)).ToList();


            RequestMultiPath(pathRequester, startMarker, listOfMarkersToGoThrough, maxJumpHeight);
        }
Example #10
0
 private void RegisterPathRequester(IPathRequester pathRequester)
 {
     _unitPathRequestManager.RegisterRequester(pathRequester);
 }
Example #11
0
 public void RequestPath(IPathRequester requester, Vector3 start, GameObject target, float radius = 0f)
 {
     this.RequestPath(requester, start, target.transform.position, radius);
 }
 public void RegisterRequester(IPathRequester pathRequester)
 {
     pathRequester.PathRequested += EvaluateIncomingRequest;
 }
Example #13
0
 public void RequestPath(IPathRequester pathRequester, PathfindingMarker startMarker, PathfindingMarker endMarker, float maxJumpHeight)
 {
     _pathRequests.Add(new PathRequest(pathRequester, startMarker, endMarker, maxJumpHeight));
 }
Example #14
0
        public void RequestPath(IPathRequester pathRequester, Vector3 startPoint, PathfindingMarker endMarker, float maxJumpHeight)
        {
            PathfindingMarker startMarker = _grid.FindNearestMarker(startPoint);

            RequestPath(pathRequester, startMarker, endMarker, maxJumpHeight);
        }
 public void GetMultiPath(IPathRequester pathRequester, PathfindingMarker startMarker, List <PathfindingMarker> pathMarkers, float maxJumpHeight)
 {
     CheckPathfindingManager();
     pathfindingManager.RequestMultiPath(pathRequester, startMarker, pathMarkers, maxJumpHeight);
 }
 public void GetPath(IPathRequester pathRequester, PathfindingMarker marker1, PathfindingMarker marker2, float maxJumpHeight)
 {
     CheckPathfindingManager();
     pathfindingManager.RequestPath(pathRequester, marker1, marker2, maxJumpHeight);
 }
Example #17
0
 public void RequestMultiPath(IPathRequester pathRequester, PathfindingMarker startMarker, List <PathfindingMarker> listOfMarkers, float maxJumpHeight)
 {
     _multiPathRequests.Add(new MultiPathRequest(pathRequester, listOfMarkers, maxJumpHeight));
 }