/// <summary> /// Plan over all exits /// </summary> /// <param name="exitWaypoint"></param> /// <param name="goal"></param> /// <returns></returns> public IntersectionPlan GetIntersectionExitPlan(ITraversableWaypoint exitWaypoint, INavigableNode goal) { // initialize the intersection plan IntersectionPlan ip = new IntersectionPlan(exitWaypoint, new List <PlanableInterconnect>(), null); ip.ExitWaypoint = exitWaypoint; //check valid exit if (exitWaypoint.IsExit) { // plan over each interconnect foreach (ArbiterInterconnect ai in exitWaypoint.Exits) { // start of plan is the final wp of itner INavigableNode start = (INavigableNode)ai.FinalGeneric; // plan double time; List <INavigableNode> nodes; this.Plan(start, goal, out nodes, out time); time += ai.TimeCost(); // create planned interconnect PlanableInterconnect pi = new PlanableInterconnect(ai, time, nodes); // add planned interconnect to the intersection plan ip.PossibleEntries.Add(pi); } } // return the plan return(ip); }
/// <summary> /// Plan over all exits /// </summary> /// <param name="exitWaypoint"></param> /// <param name="goal"></param> /// <returns></returns> public IntersectionPlan GetIntersectionExitPlan(ITraversableWaypoint exitWaypoint, INavigableNode goal) { // initialize the intersection plan IntersectionPlan ip = new IntersectionPlan(exitWaypoint, new List<PlanableInterconnect>(), null); ip.ExitWaypoint = exitWaypoint; //check valid exit if (exitWaypoint.IsExit) { // plan over each interconnect foreach (ArbiterInterconnect ai in exitWaypoint.Exits) { // start of plan is the final wp of itner INavigableNode start = (INavigableNode)ai.FinalGeneric; // plan double time; List<INavigableNode> nodes; this.Plan(start, goal, out nodes, out time); time += ai.TimeCost(); // create planned interconnect PlanableInterconnect pi = new PlanableInterconnect(ai, time, nodes); // add planned interconnect to the intersection plan ip.PossibleEntries.Add(pi); } } // return the plan return ip; }