private void SelectDestination(Vertex previousVertex) { if (previousVertex == null) { path = roads.GetPathToRandomTarget(position); } else { List <Vertex> filteredVertices = new List <Vertex>(); foreach (Edge e in position.GetEdges()) { Vertex neighbor = e.GetNeighbor(position); if (neighbor != previousVertex) { filteredVertices.Add(neighbor); } } if (filteredVertices.Count == 0) { path = roads.GetPathToRandomTarget(position); } else { Vertex randomNeighbor = filteredVertices[Random.Range(0, filteredVertices.Count)]; path = roads.GetPathToRandomTarget(randomNeighbor); path.Prepend(position); path.Prepend(previousVertex); } } path.Calculate(); WaypointProgressTracker wpt = this.GetComponent <WaypointProgressTracker>(); wpt.Setup(new WaypointCircuit(path.GetPath())); }