public SimRoute[] GetRoute(SimWaypoint StartNode, SimWaypoint EndNode, out bool IsFake) { SimMovement AS = new SimMovement(this); AS.Initialize(StartNode, EndNode); while (AS.NextStep()) { } if (AS.PathFound) { // Full Path IsFake = false; return(AS.PathByArcs); } // Partial Path IsFake = true; //int Nb = AS._LeafToGoBackUp.NbArcsVisited; //SimRoute[] Path = new SimRoute[Nb]; //Track Cur = _LeafToGoBackUp; //for (int i = Nb - 1; i >= 0; i--, Cur = Cur.Queue) // Path[i] = Cur.Queue.EndNode.ArcGoingTo(Cur.EndNode); //return Path; //AS.Open.Length, AS.Closed.Length, AS.StepCounter SimRoute[] PathByArcs = AS.PathByArcs; if (PathByArcs == null || PathByArcs.Length == 0) { return(FakeRoute(StartNode, EndNode)); } List <SimRoute> list = new List <SimRoute>(); list.AddRange(PathByArcs); SimRoute LastArc = PathByArcs[PathByArcs.Length - 1]; list.AddRange(FakeRoute(LastArc.EndNode, EndNode)); return(list.ToArray()); }
public SimRoute[] GetRoute(SimWaypoint StartNode, SimWaypoint EndNode, out bool IsFake) { SimMovement AS = new SimMovement(this); AS.Initialize(StartNode, EndNode); while (AS.NextStep()) { } if (AS.PathFound) { // Full Path IsFake = false; return AS.PathByArcs; } // Partial Path IsFake = true; //int Nb = AS._LeafToGoBackUp.NbArcsVisited; //SimRoute[] Path = new SimRoute[Nb]; //Track Cur = _LeafToGoBackUp; //for (int i = Nb - 1; i >= 0; i--, Cur = Cur.Queue) // Path[i] = Cur.Queue.EndNode.ArcGoingTo(Cur.EndNode); //return Path; //AS.Open.Length, AS.Closed.Length, AS.StepCounter SimRoute[] PathByArcs = AS.PathByArcs; if (PathByArcs == null || PathByArcs.Length == 0) { return FakeRoute(StartNode, EndNode); } List<SimRoute> list = new List<SimRoute>(); list.AddRange(PathByArcs); SimRoute LastArc = PathByArcs[PathByArcs.Length - 1]; list.AddRange(FakeRoute(LastArc.EndNode, EndNode)); return list.ToArray(); }
void NouveauGraphe() { TempN1 = TempN2 = null; AjouterN1 = AjouterN2 = false; AE = new SimMovement(G); CoordsPanel.Text = String.Empty; ; NbNodesPanel.Text = G.Nodes.Count.ToString(); NbArcsPanel.Text = G.Arcs.Count.ToString(); NDepart = NArrivee = null; Chemin = null; PasAPas = false; AEtoileToolBar.Visible = false; }