void Start() { MapData = new MapData(); Pathfinder = new NodeGraphSearch(); Pathfinder.SetMapData(MapData); Units = new UnitObjectCollection(); FindAllUnitObjects(); }
/// <summary> /// Add all search agents prior searching to the closed list. /// </summary> /// <param name="subject"></param> /// <param name="allAgents"></param> private void AddSearchAgentsToClosed(IUnitObject subject, UnitObjectCollection allAgents) { for (int i = 0; i < allAgents.Count; i++) { IUnitObject obj = allAgents[i]; if (!ReferenceEquals(subject, obj)) { Vector2Int tilePosition = obj.Unit.Body.TilePosition; Node node = mapData.GetNode(tilePosition.x, tilePosition.y); node.ClosedListId = searchID; node.InitializeMaximized(); } } }
/// <summary> /// Initialize the pathfinder before starting the search. /// </summary> /// <param name="searchAgent"></param> /// <param name="allAgents"></param> public void Initialize(IUnitObject searchAgent, UnitObjectCollection allAgents) { searchID++; Vector2Int tilePosition = searchAgent.Unit.Body.TilePosition; Node startNode = mapData.GetNode(tilePosition.x, tilePosition.y); startNode.InitializeMinimized(); openList.Clear(); startNode.OpenListId = searchID; openList.Add(startNode); AddSearchAgentsToClosed(searchAgent, allAgents); initialized = true; finished = false; iterations = 0; current = null; }