예제 #1
0
 public override void Reset()
 {
     if (_gridNodes != null)
     {
         foreach (KeyValuePair <int, GridNode> kv in _gridNodes)
         {
             _gridNodesPool.Store(kv.Value);
         }
         _gridNodes.Clear();
     }
     base.Reset();
 }
예제 #2
0
        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);
                }
            }
        }
예제 #3
0
        //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);
            }
        }