Example #1
0
 /// <summary>
 /// 返回状态给父节点
 /// </summary>
 /// <param name="childNode"></param>
 /// <param name="status"></param>
 public void ReturnToParent(BevNode childNode, BevRunningStatus status)
 {
     OnExit();
     if (parentNode != null)
     {
         parentNode.AcceptReturn(childNode, status);
     }
 }
Example #2
0
 protected override void OnExit()
 {
     if (selfStatus != BevRunningStatus.Executing)
     {
         ownTree.updateNodeEvnet -= UpdateNode;
         selfStatus = BevRunningStatus.None;
     }
 }
Example #3
0
 protected override void OnEnter()
 {
     if (selfStatus == BevRunningStatus.None)
     {
         selfStatus = BevRunningStatus.Executing;
         Action();
         ownTree.updateNodeEvnet += UpdateNode;
     }
     ReturnToParent(this, selfStatus);
 }
Example #4
0
 /// <summary>
 /// 接受子节点返回
 /// </summary>
 public override void DoReturn(BevNode childNode, BevRunningStatus status)
 {
     chindNodeStatusList[childNodeList.IndexOf(childNode)] = status;
     if (status == BevRunningStatus.Executing)
     {
         DelayTickChild(childNode);
     }
     else if (status == BevRunningStatus.Failure)
     {
         ReturnToParent(this, BevRunningStatus.Failure);
     }
     else if (status == BevRunningStatus.Succeed)
     {
         for (int i = 0; i < childNodeList.Count; i++)
         {
             if (chindNodeStatusList[i] == BevRunningStatus.Failure)
             {
                 ReturnToParent(this, BevRunningStatus.Failure);
             }
         }
         ReturnToParent(this, BevRunningStatus.Succeed);
     }
 }
Example #5
0
 /// <summary>
 /// 接受子节点返回
 /// </summary>
 public override void DoReturn(BevNode childNode, BevRunningStatus status)
 {
     if (status == BevRunningStatus.Failure)
     {
         ReturnToParent(this, BevRunningStatus.Failure);
     }
     else if (status == BevRunningStatus.Succeed)
     {
         int curIndex = childNodeList.IndexOf(childNode);
         if (curIndex == childNodeList.Count - 1)
         {
             ReturnToParent(this, BevRunningStatus.Succeed);
         }
         else
         {
             childNodeList[curIndex + 1].Tick();
         }
     }
     else if (status == BevRunningStatus.Executing)
     {
         DelayTickChild(childNode);
     }
 }
Example #6
0
    /* 可重写接口 */

    /// <summary>
    /// 子节点返回内容之后调用,根据子节点状态返回状态到父节点
    /// </summary>
    /// <param name="childNode"></param>
    /// <param name="status"></param>
    public virtual void DoReturn(BevNode childNode, BevRunningStatus status)
    {
    }
Example #7
0
 /// <summary>
 /// 接受子节点返回
 /// </summary>
 public void AcceptReturn(BevNode childNode, BevRunningStatus status)
 {
     ownTree.CurNode = this;
     DoReturn(childNode, status);
 }
Example #8
0
 public void OnActionComplete(BevRunningStatus status)
 {
     selfStatus = status;
 }
Example #9
0
 protected virtual void DoExit(ref BevNodeInputParam input, BevRunningStatus status)
 {
 }