public AStarSearch(IAStarNode start, IAStarNode end, calcSpecialNodeCostFunc calcspecialcostfunc, getAdjacnentNodesFunc getadjacentnodesfunc, isOpenRouteFunc isopenroutefunc,calcScoreHeuristicFunc calcscoreheuristaic)
 {
     //Debug.Log("Init AStar!!");
     SpecialNodeCostFunc = calcspecialcostfunc != null ? calcspecialcostfunc : this.defaultSpecialNodeCost;
     //Debug.Log(string.Format("isNull: {0}:{1}",SpecialNodeCostFunc !=null,calcspecialcostfunc !=null));
     GetAdjacentNodesFunc = getadjacentnodesfunc != null? getadjacentnodesfunc : this.getAdjacentNodes;
     IsOpenRouteFunc = isopenroutefunc != null? isopenroutefunc : this.isOpenRoute;
     CalcScoreHeuristic = calcscoreheuristaic != null ? calcscoreheuristaic : this.defaultCalcScoreHeuristic;
     EndNode = end;
     start.Parent = Dummy;
     start.Score = calcScore(start);
     StartNode = start;
     init();
     search();
 }
 public AStarSearch(IAStarNode start, IAStarNode end, getAdjacnentNodesFunc getadjacentnodesfunc,isOpenRouteFunc isopenroutefunc)
     : this(start, end, node => { return 0; }, getadjacentnodesfunc,isopenroutefunc,null)
 {
 }
 public AStarSearch(IAStarNode start, IAStarNode end, calcSpecialNodeCostFunc calcspecialcostfunc, getAdjacnentNodesFunc getadjacentnodesfunc)
     : this(start,end,calcspecialcostfunc,getadjacentnodesfunc,null,null)
 {
     //IsOpenRouteFunc = isOpenRoute;
 }
 public AStarSearch(IAStarNode start, IAStarNode end,getAdjacnentNodesFunc getadjacentnodesfunc)
     : this(start, end, node => { return 0; },getadjacentnodesfunc)
 {
 }