public JumpPointParam( IBaseGrid iGrid, GridPos iStartPos, GridPos iEndPos, bool iAllowEndNodeUnWalkable = true, bool iCrossCorner = true, bool iCrossAdjacentPoint = true, HeuristicMode iMode = HeuristicMode.EUCLIDEAN) { switch (iMode) { case HeuristicMode.MANHATTAN: this.m_heuristic = new HeuristicDelegate(Heuristic.Manhattan); break; case HeuristicMode.EUCLIDEAN: this.m_heuristic = new HeuristicDelegate(Heuristic.Euclidean); break; case HeuristicMode.CHEBYSHEV: this.m_heuristic = new HeuristicDelegate(Heuristic.Chebyshev); break; default: this.m_heuristic = new HeuristicDelegate(Heuristic.Euclidean); break; } this.m_allowEndNodeUnWalkable = iAllowEndNodeUnWalkable; this.m_crossAdjacentPoint = iCrossAdjacentPoint; this.m_crossCorner = iCrossCorner; this.openList = new List<Node>(); this.m_searchGrid = iGrid; this.m_startNode = this.m_searchGrid.GetNodeAt(iStartPos.x, iStartPos.y); this.m_endNode = this.m_searchGrid.GetNodeAt(iEndPos.x, iEndPos.y); if (this.m_startNode == null) { this.m_startNode = new Node(iStartPos.x, iStartPos.y, true); } if (this.m_endNode == null) { this.m_endNode = new Node(iEndPos.x, iEndPos.y, true); } this.m_useRecursive = false; }
public void Reset(GridPos iStartPos, GridPos iEndPos, IBaseGrid iSearchGrid = null) { this.openList.Clear(); this.m_startNode = null; this.m_endNode = null; if (iSearchGrid != null) { this.m_searchGrid = iSearchGrid; } this.m_searchGrid.Reset(); this.m_startNode = this.m_searchGrid.GetNodeAt(iStartPos.x, iStartPos.y); this.m_endNode = this.m_searchGrid.GetNodeAt(iEndPos.x, iEndPos.y); if (this.m_startNode == null) { this.m_startNode = new Node(iStartPos.x, iStartPos.y, true); } if (this.m_endNode == null) { this.m_endNode = new Node(iEndPos.x, iEndPos.y, true); } }