Example #1
0
 void Start()
 {
     MapData    = new MapData();
     Pathfinder = new NodeGraphSearch();
     Pathfinder.SetMapData(MapData);
     Units = new UnitObjectCollection();
     FindAllUnitObjects();
 }
Example #2
0
 /// <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();
         }
     }
 }
Example #3
0
        /// <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;
        }