/// <summary> /// Finds a path from own position to given position in maze. /// </summary> /// <returns>The path.</returns> /// <param name="map">Map.</param> /// <param name="start">Start.</param> /// <param name="end">End.</param> /// <param name="solution">Solution.</param> /// <param name="allowDiagonals">If set to <c>true</c> allow diagonals.</param> public AStarSearch.SearchState FindPath(Vec3di end, List <Vec3di> solution, bool allowDiagonals) { solution.Clear(); AStarSearch astarsearch = new AStarSearch(map, ownPosition, end, allowDiagonals); AStarSearch.SearchState SearchState; do { SearchState = astarsearch.SearchStep(); }while(SearchState == AStarSearch.SearchState.SEARCHING); if (SearchState == AStarSearch.SearchState.SUCCEEDED) { GridPosition mapPos = astarsearch.GetSolutionStart(); while (mapPos != null) { solution.Add(mapPos.Position); mapPos = astarsearch.GetSolutionNext(); } ; // Once you're done with the solution you can free the nodes up astarsearch.Cleanup(); } else if (SearchState == AStarSearch.SearchState.FAILED) { //Zentronic.Debug.LogError("search terminated. Goal state not found!"); } return(SearchState); }