Пример #1
0
        internal void AddConnection(Node targetNode, double distance, bool twoWay)
        {
            if (targetNode == null) throw new ArgumentNullException("targetNode");
            if (targetNode == this) throw new ArgumentException("Node may not connect to itself.");
            if (distance <= 0) throw new ArgumentException("Distance must be positive.");

            _connections.Add(new NodeConnection(targetNode, distance));
            if (twoWay) targetNode.AddConnection(this, distance, false);
        }
 private void ProcessNode(Node node, List<Node> queue)
 {
     var connections = node.Connections.Where(c => queue.Contains(c.Target));
     foreach (var connection in connections)
     {
         double distance = node.DistanceFromStart + connection.Distance;
         if (distance < connection.Target.DistanceFromStart)
         {
             connection.Target.DistanceFromStart = distance;
             connection.Target.parent = node;
         }
     }
 }
Пример #3
0
 internal NodeConnection(Node target, double distance)
 {
     Target = target;
     Distance = distance;
 }
Пример #4
0
 public void AddNode(string name)
 {
     var node = new Node(name);
     Nodes.Add(name, node);
 }