Ejemplo n.º 1
0
        internal Weaver(Chassis chassis)
        {
            List <NavNode> bridgeNodes = new List <NavNode>();
            NavNode        end         = null;

            foreach (Bezite bridge in chassis.bridges)
            {
                bezite = bridge;
                List <NavNode> nodes = new List <NavNode>(new Linker <NavNode>(InitNode, Eval).result);
                if (end != null)
                {
                    this.nodes.Remove(nodes[0]);
                    nodes.RemoveAt(0);
                    end.Link(nodes[0]);
                }
                else
                {
                    bridgeNodes.Add(nodes[0]);
                }
                end = nodes[nodes.Count - 1];
                bridgeNodes.Add(end);
                for (int i = 0; i < nodes.Count - 1; i++)
                {
                    nodes[i].Link(nodes[i + 1]);
                }
            }
            for (int i = 0; i < bridgeNodes.Count; i++)
            {
                WeaveBranches(bridgeNodes[i], chassis.branchSets[i]);
            }
        }
Ejemplo n.º 2
0
 void WeaveBranches(NavNode pivot, HashSet <Bezite> branches)
 {
     foreach (Bezite branch in branches)
     {
         bezite = branch;
         List <NavNode> nodes = new List <NavNode>(new Linker <NavNode>(InitNode, Eval).result);
         this.nodes.Remove(nodes[0]);
         nodes.RemoveAt(0);
         pivot.Link(nodes[0]);
         for (int i = 0; i < nodes.Count - 1; i++)
         {
             nodes[i].Link(nodes[i + 1]);
         }
     }
 }