public override void Reset() { if (_gridNodes != null) { foreach (KeyValuePair <int, GridNode> kv in _gridNodes) { _gridNodesPool.Store(kv.Value); } _gridNodes.Clear(); } base.Reset(); }
public void RemoveAgent(IAgentBehaviour agent) { AgentGroup aGroup = agent.group; if (aGroup != null) { aGroup.RemoveAgent(agent); if (aGroup._agents.Count == 0)//store group { s_groupPool.Store(aGroup); _group.Remove(aGroup.groupId); } } }
//public void RemovePath(IPathAgent agent) //{ // if(agent!=null) // { // _pathPool.Store((AStarMachine.AStarMachine)agent.Asm); // agent.Asm = null; // } //} internal void ClearFinishedPath(AStarMachine.AStarMachine path) { if (path.Agent != null) { AStarAgent agent = path.Agent as AStarAgent; if (agent._asm == path) { agent._asm = null; } } if (path.Goal != null && !path.IsWorking && !path._inQueue) //avoid storing the same obj repeatly { _goalPool.Store((GridAStarGoal)path.Goal); _storagePool.Store((GridAStarStorage)path.Storage); _pathPool.Store(path); } }