private void Reset() { for (int y = 0; y < m_row; y++) { for (int x = 0; x < m_col; x++) { m_nodes[y, x].Reset(); } } m_startNode.SetSearchType(SearchType.Start, false); m_goalNode.SetSearchType(SearchType.Goal, false); m_algo = null; }
protected override void Generate() { StopAllCoroutines(); Reset(); if (m_algo == null) { m_algo = GetAlgorithm(); } if (m_algo != null) { StartCoroutine(m_algo.Process()); } }
private BaseSearchAlgo GetAlgorithm() { BaseSearchAlgo algo = null; switch (m_searchAlgo) { case SearchAlgo.A_Star: algo = new AStar(m_startNode, m_goalNode, m_nodes, m_weight, m_showTime); break; case SearchAlgo.Theta_Star: algo = new ThetaStar(m_startNode, m_goalNode, m_nodes, m_weight, m_showTime); break; case SearchAlgo.LazyTheta_Star: algo = new LazyThetaStar(m_startNode, m_goalNode, m_nodes, m_weight, m_showTime); break; case SearchAlgo.BestFirstSearch: algo = new BestFirstSearch(m_startNode, m_goalNode, m_nodes, m_weight, m_showTime); break; case SearchAlgo.BreadthFirstSearch: algo = new BreadthFirstSearch(m_startNode, m_goalNode, m_nodes, m_weight, m_showTime); break; case SearchAlgo.DijkstraSearch: algo = new DijkstraSearch(m_startNode, m_goalNode, m_nodes, m_weight, m_showTime); break; case SearchAlgo.JPS: algo = new JumpPointSearch(m_startNode, m_goalNode, m_nodes, m_weight, m_showTime); break; case SearchAlgo.JPSPlus: algo = new JPSPlus(m_startNode, m_goalNode, m_nodes, m_weight, m_showTime); break; case SearchAlgo.BiA_Star: algo = new BiAStar(m_startNode, m_goalNode, m_nodes, m_weight, m_showTime); break; #region Incremental case SearchAlgo.D_Star: algo = new DStar(m_startNode, m_goalNode, m_nodes, m_showTime); break; case SearchAlgo.FocussedD_Star: algo = new FocussedDStar(m_startNode, m_goalNode, m_nodes, m_showTime); break; case SearchAlgo.LPA_Star: algo = new LPAStar(m_startNode, m_goalNode, m_nodes, m_showTime); //algo = new LPAStar_Optimized(m_startNode, m_endNode, m_nodes, m_showTime); break; case SearchAlgo.DstarLite: algo = new DStarLite(m_startNode, m_goalNode, m_nodes, m_showTime); break; case SearchAlgo.Path_AA_Star: algo = new Path_AAStar(m_startNode, m_goalNode, m_nodes, m_showTime); break; case SearchAlgo.Tree_AA_Star: algo = new Tree_AAStar(m_startNode, m_goalNode, m_nodes, m_showTime); break; #endregion #region Moving Target case SearchAlgo.GAA_Star: algo = new GAAStar(m_startNode, m_goalNode, m_nodes, m_showTime); break; case SearchAlgo.GFRA_Star: algo = new GFRAStar(m_startNode, m_goalNode, m_nodes, m_showTime); break; case SearchAlgo.MT_DstarLite: algo = new MT_DStarLite(m_startNode, m_goalNode, m_nodes, m_showTime); break; #endregion case SearchAlgo.AnnotatedA_Star: algo = new AnnotatedAStar(m_startNode, m_goalNode, m_nodes, m_weight, m_showTime, m_unitSize); break; default: Debug.LogError($"No code for SearchAlgo={m_searchAlgo}"); break; } return(algo); }