Пример #1
0
    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()));
    }