Beispiel #1
0
    private List <LinkedGraphNode> GetAdjacentLinkedNodes(LinkedGraphNode linkedNode)
    {
        List <LinkedGraphNode> adjacentLinkedNodes = new List <LinkedGraphNode>();

        foreach (GraphNode adjacentNode in linkedNode.Node.AdjacentNodes)
        {
            adjacentLinkedNodes.Add(new LinkedGraphNode(adjacentNode, linkedNode));
        }

        return(adjacentLinkedNodes);
    }
Beispiel #2
0
    public override PathfindingResult GetPathToNode(DesiredPathData desiredPathData)
    {
        InitializePathfinding(desiredPathData);

        // Consider using different data structure, LinkedList<> maybe?
        List <GraphNode> pathToFinish     = new List <GraphNode>();
        LinkedGraphNode  linkedFinishNode = GetFinishNode(desiredPathData.StartNode);

        while (linkedFinishNode != null && linkedFinishNode.PreviousNode != null)
        {
            pathToFinish.Insert(0, linkedFinishNode.Node);
            linkedFinishNode = linkedFinishNode.PreviousNode;
        }

        return(new PathfindingResult(visitedNodes, pathToFinish));
    }
Beispiel #3
0
 public LinkedGraphNode(GraphNode node, LinkedGraphNode previousNode)
 {
     Node         = node;
     PreviousNode = previousNode;
 }