public MazeAStar(VisionMapping vision, Func <Map2d> getMap, Func <bool> canJump, Action reset_state, GetCameFrom get_came_from, Action <Coord, Coord, int> set_came_from, Func <Coord, float> get_f_score, Action <Coord, float> set_f_score, Func <Coord, float> get_g_score, Action <Coord, float> set_g_score) { SetAstarSourceData(vision, getMap, canJump, reset_state, get_came_from, set_came_from, get_f_score, set_f_score, get_g_score, set_g_score); }
public GenericAStar(Func <NODE_TYPE, List <EDGE_TYPE> > getEdges, Func <NODE_TYPE, EDGE_TYPE, NODE_TYPE> getEdgeToNode, Func <NODE_TYPE, EDGE_TYPE, float> edgeCost, Func <NODE_TYPE, NODE_TYPE, float> distanceHeuristic, Action reset_state, GetCameFrom get_came_from, Action <NODE_TYPE, NODE_TYPE, EDGE_TYPE> set_came_from, Func <NODE_TYPE, float> get_f_score, Action <NODE_TYPE, float> set_f_score, Func <NODE_TYPE, float> get_g_score, Action <NODE_TYPE, float> set_g_score) { SetNodeAndEdgeMethods(getEdges, getEdgeToNode, edgeCost, distanceHeuristic, reset_state, get_came_from, set_came_from, get_f_score, set_f_score, get_g_score, set_g_score); }
public void SetAstarSourceData(VisionMapping vision, Func <Map2d> getMap, Func <bool> canJump, Action reset_state, GetCameFrom get_came_from, Action <Coord, Coord, int> set_came_from, Func <Coord, float> get_f_score, Action <Coord, float> set_f_score, Func <Coord, float> get_g_score, Action <Coord, float> set_g_score) { this.getMap = getMap; this.canJump = canJump; this.vision = vision; SetNodeAndEdgeMethods(GetEdges, NextNode, EdgeCost, Dist, reset_state, get_came_from, set_came_from, get_f_score, set_f_score, get_g_score, set_g_score); }
public void SetNodeAndEdgeMethods(Func <NODE_TYPE, List <EDGE_TYPE> > getEdges, Func <NODE_TYPE, EDGE_TYPE, NODE_TYPE> getEdgeToNode, Func <NODE_TYPE, EDGE_TYPE, float> edgeCost, Func <NODE_TYPE, NODE_TYPE, float> distanceHeuristic, Action reset_state, GetCameFrom get_came_from, Action <NODE_TYPE, NODE_TYPE, EDGE_TYPE> set_came_from, Func <NODE_TYPE, float> get_f_score, Action <NODE_TYPE, float> set_f_score, Func <NODE_TYPE, float> get_g_score, Action <NODE_TYPE, float> set_g_score) { this.getEdges = getEdges; this.getEdgeToNode = getEdgeToNode; this.edgeCost = edgeCost; this.distanceHeuristic = distanceHeuristic; this.reset_state = reset_state; this.get_came_from = get_came_from; this.set_came_from = set_came_from; this.get_f_score = get_f_score; this.set_f_score = set_f_score; this.get_g_score = get_g_score; this.set_g_score = set_g_score; }
static List <EDGE_TYPE> reconstruct_path(GetCameFrom previous, NODE_TYPE goal) { List <EDGE_TYPE> list = new List <EDGE_TYPE>(); NODE_TYPE prev = goal, cursor; int loopGuard = 0; do { //list.Add(prev); EDGE_TYPE edge; edge = previous(prev, out cursor); if (prev.Equals(cursor)) { break; } list.Add(edge); prev = cursor; } while (++loopGuard < 1 << 20); // hasPreviousNode); return(list); }