public override void update(float elapsedTime)
 {
     base.update(elapsedTime);
     // 先更新所有节点
     foreach (var item in mNodeList)
     {
         if (!item.Value.mDeadNode)
         {
             item.Value.update(elapsedTime);
         }
     }
     if (mTimer.tickTimer(elapsedTime))
     {
         LIST(out List <DTreeNode> deadList);
         foreach (var item in mNodeList)
         {
             if (item.Value.mDeadNode)
             {
                 deadList.Add(item.Value);
             }
         }
         // 移除已经死亡的节点
         int count = deadList.Count;
         for (int i = 0; i < count; ++i)
         {
             clearNode(deadList[i]);
         }
         UN_LIST(deadList);
         // 从根节点开始遍历
         if (mRootNode != null && mRootNode.condition())
         {
             mRootNode.execute();
         }
     }
 }
 public override void update(float elapsedTime)
 {
     base.update(elapsedTime);
     // 先更新所有节点
     foreach (var item in mNodeList)
     {
         if (!item.Value.mDeadNode)
         {
             item.Value.update(elapsedTime);
         }
     }
     if (mTimer.tickTimer(elapsedTime))
     {
         List <DTreeNode> deadList = mListPool.newList(out deadList);
         foreach (var item in mNodeList)
         {
             if (item.Value.mDeadNode)
             {
                 deadList.Add(item.Value);
             }
         }
         // 移除已经死亡的节点
         foreach (var item in deadList)
         {
             clearNode(item);
         }
         mListPool.destroyList(deadList);
         // 从根节点开始遍历
         if (mRootNode != null && mRootNode.condition())
         {
             mRootNode.execute();
         }
     }
 }
Esempio n. 3
0
    public override void execute()
    {
        // 按子节点顺序查看子节点是否满足条件
        int count = mChildList.Count;

        for (int i = 0; i < count; ++i)
        {
            DTreeNode node = mChildList[i];
            // 找到一个满足条件的子节点就不再继续遍历
            if (node.isActive() && node.condition())
            {
                node.execute();
                break;
            }
        }
    }