コード例 #1
0
        private void FindPath(PathRequest request)
        {
            Vector2Int start = m_navGrid.WorldToCoords(request.PathStart);
            Vector2Int end   = m_navGrid.WorldToCoords(request.PathEnd);

            var comeFromDict = PathfindingAlgorithms.Astar(start, end, m_navGrid);
            var result       = PathfindingAlgorithms.RetracePath(m_navGrid, start, end, comeFromDict, false);

            lock (request)
            {
                request.IsSuccess = result.Item1;
                request.Path      = result.Item2;
            }
        }
コード例 #2
0
        private void ThreadWork(object o)
        {
            PathRequest currRequest = null;

            while (m_doRunThreads)
            {
                if (m_pathRequests.Count > 0)
                {
                    lock (m_pathRequests)
                        currRequest = m_pathRequests.Dequeue();

                    FindPath(currRequest);
                }
            }
        }
コード例 #3
0
ファイル: Path.cs プロジェクト: Dawnfall/UnityHelpers
 public Path(List <Vector3> path, bool isSuccess, PathRequest originalRequest)
 {
     m_path            = path;
     m_isSuccess       = isSuccess;
     m_originalRequest = originalRequest;
 }
コード例 #4
0
 /// <summary>
 /// method that sends a path request to pathfind manager
 /// </summary>
 private void SearchForPath()
 {
     m_pathRequest = new PathRequest(this, transform.position, m_walkDestination);
     PathFindManager.Instance.RequestPath(m_pathRequest);
 }
コード例 #5
0
 /// <summary>
 /// Request a path search by pathrequest
 /// </summary>
 /// <param name="pathRequest"></param>
 public void RequestPath(PathRequest pathRequest)
 {
     lock (m_pathRequests)
         m_pathRequests.Enqueue(pathRequest);
 }