/// <summary> /// 从源星球到目标星球的最短路径(待优化:保存源星球的最短路径表,下次寻找不必再次运算算法) /// </summary> /// <param name="StartStar">源星球</param> /// <param name="EndStar">目标星球</param> /// <returns>所有经过的星球(包括目标星球)</returns> public static RoutePlanResult Plan(UnitStar StartStar, UnitStar EndStar) { RoutePlanResult result = new RoutePlanResult(); //在调用最短路径算法前, Node.CheckNodeCanReach先判断目标节点是否在源节点移动半径内,是的话直接返回源节点(两点之间,直线最短) if (StartStar.CheckStarReachByDistance(EndStar) == true) { result.PassedStars.Add(StartStar); result.PassedStars.Add(EndStar); result.Weight = StartStar.GetTargetStarDistance(EndStar); } else { RoutePlanner planner = new RoutePlanner(); result = planner.Paln(MogoWorld.m_dataMapManager.GetStarList(), StartStar.UnitId, EndStar.UnitId); result.PassedStars.Add(EndStar); planner = null; } return(result); }