Ejemplo n.º 1
0
        public IEnumerable <IntVector3> Find()
        {
            while (m_queue.Count > 0)
            {
                if (this.CancellationToken.IsCancellationRequested)
                {
                    this.Status = BFSStatus.Cancelled;
                    yield break;
                }

                if (m_map.Count > this.MaxNodeCount)
                {
                    this.Status = BFSStatus.LimitExceeded;
                    yield break;
                }

                var p = m_queue.Dequeue();

                if (m_target.GetIsTarget(p))
                {
                    yield return(p);
                }

                CheckNeighbors(p);
            }

            this.Status = BFSStatus.NotFound;
        }
Ejemplo n.º 2
0
        public IEnumerable<IntVector3> Find()
        {
            while (m_queue.Count > 0)
            {
                if (this.CancellationToken.IsCancellationRequested)
                {
                    this.Status = BFSStatus.Cancelled;
                    yield break;
                }

                if (m_map.Count > this.MaxNodeCount)
                {
                    this.Status = BFSStatus.LimitExceeded;
                    yield break;
                }

                var p = m_queue.Dequeue();

                if (m_target.GetIsTarget(p))
                    yield return p;

                CheckNeighbors(p);
            }

            this.Status = BFSStatus.NotFound;
        }