public override BTStatus Step() { for (int i = 0; i < m_Children.Count; i++) { BTNode pNode = m_Children[i]; BTStatus pStatus = pNode.Step(); switch (pStatus) { case BTStatus.Running: { if (m_ActiveIndex != i && m_ActiveIndex != -1) { m_Children[m_ActiveIndex].Clear(); } m_ActiveIndex = i; m_PreviaIndex = -1; m_IsRunning = true; return(BTStatus.Running); } case BTStatus.Success: { if (m_ActiveIndex != i && m_ActiveIndex != -1) { m_Children[m_ActiveIndex].Clear(); } pNode.Clear(); m_ActiveIndex = -1; m_PreviaIndex = i; m_IsRunning = false; return(BTStatus.Success); } case BTStatus.Failure: { pNode.Clear(); return(BTStatus.Failure); } } } m_IsRunning = false; return(BTStatus.Failure); }
protected override EBTStatus Execute() { if (FindJudgeTrans() == false) { return(EBTStatus.BT_FAILURE); } List <Actor> list = Owner.GetActorsByAffectType(Affect); List <Actor> hits = new List <Actor>(); for (int i = 0; i < list.Count; i++) { Actor actor = list[i]; if (Scope.IsTouch(actor)) { mCurCount++; hits.Add(actor); } if (CheckHitLimit()) { break; } } if (hits.Count > 0) { BTTreeManager.Instance.SaveData(this, Define.BT_JUDGE_LIST, hits); BTTreeManager.Instance.SaveData(this, Define.BT_JUDGE_SUCCESS, string.Empty); if (mChildren.Count > 0) { BTNode pNode = mChildren[0]; pNode.Step(); } } if (LifeTime > 0) { return(CheckHitLimit() ? EBTStatus.BT_SUCCESS : EBTStatus.BT_RUNNING); } else { return(mCurCount > 0 ? EBTStatus.BT_SUCCESS : EBTStatus.BT_FAILURE); } }
protected override BTStatus Execute() { if (FindJudgeTrans() == false) { return(BTStatus.Failure); } List <ActorBase> list = Owner.GetActorsByAffectType(Affect); List <ActorBase> hits = new List <ActorBase>(); for (int i = 0; i < list.Count; i++) { ActorBase actor = list[i]; if (Scope.IsTouch(actor)) { mCurCount++; hits.Add(actor); } if (CheckHitLimit()) { break; } } if (hits.Count > 0) { GameEntry.BT.SaveData(this, Constant.Define.BTJudgeList, hits); GameEntry.BT.SaveData(this, Constant.Define.BTJudgeSuccess, string.Empty); if (m_Children.Count > 0) { BTNode pNode = m_Children[0]; pNode.Step(); } } if (LifeTime > 0) { return(CheckHitLimit() ? BTStatus.Success : BTStatus.Running); } else { return(mCurCount > 0 ? BTStatus.Success : BTStatus.Failure); } }
public override BTStatus Step() { if (m_ActiveIndex == -1) { m_ActiveIndex = UnityEngine.Random.Range(0, m_Children.Count); } if (m_Children.Count > 0) { BTNode pNode = m_Children[m_ActiveIndex]; BTStatus pStatus = pNode.Step(); switch (pStatus) { case BTStatus.Running: { m_IsRunning = true; return(BTStatus.Running); } case BTStatus.Success: { pNode.Clear(); m_ActiveIndex = -1; m_PreviaIndex = m_ActiveIndex; m_IsRunning = false; return(BTStatus.Success); } case BTStatus.Failure: { pNode.Clear(); m_ActiveIndex = -1; m_PreviaIndex = -1; m_IsRunning = false; return(BTStatus.Failure); } } } m_ActiveIndex = -1; m_PreviaIndex = -1; m_IsRunning = false; return(BTStatus.Failure); }
public override BTStatus Step() { for (int i = 0; i < m_Children.Count; i++) { if (m_FinishChildrenIndexList.Contains(i)) { continue; } BTNode pNode = m_Children[i]; BTStatus pStatus = pNode.Step(); if (pStatus != BTStatus.Running) { pNode.Clear(); m_FinishChildrenIndexList.Add(i); } } m_IsRunning = (m_FinishChildrenIndexList.Count < m_Children.Count); return((m_IsRunning) ? BTStatus.Running : BTStatus.Success); }
public override EBTStatus Step() { for (int i = 0; i < mChildren.Count; i++) { if (mFinishChildrenIndexList.Contains(i)) { continue; } BTNode pNode = mChildren[i]; EBTStatus pStatus = pNode.Step(); if (pStatus != EBTStatus.BT_RUNNING) { pNode.Clear(); mFinishChildrenIndexList.Add(i); } } mIsRunning = (mFinishChildrenIndexList.Count < mChildren.Count); return((mIsRunning) ? EBTStatus.BT_RUNNING : EBTStatus.BT_SUCCESS); }
public override BTStatus Step() { if (m_ActiveIndex == -1) { m_ActiveIndex = 0; } for (; m_ActiveIndex < m_Children.Count; m_ActiveIndex++) { BTNode pNode = m_Children[m_ActiveIndex]; BTStatus pStatus = pNode.Step(); switch (pStatus) { case BTStatus.Running: { m_IsRunning = true; return(BTStatus.Running); } case BTStatus.Success: { pNode.Clear(); continue; } case BTStatus.Failure: { m_ActiveIndex = -1; m_IsRunning = false; pNode.Clear(); return(BTStatus.Failure); } } } m_ActiveIndex = -1; m_IsRunning = false; return(BTStatus.Success); }
public override EBTStatus Step() { if (mActiveIndex == -1) { mActiveIndex = 0; } for (; mActiveIndex < mChildren.Count; mActiveIndex++) { BTNode pNode = mChildren[mActiveIndex]; EBTStatus pStatus = pNode.Step(); switch (pStatus) { case EBTStatus.BT_RUNNING: { mIsRunning = true; return(EBTStatus.BT_RUNNING); } case EBTStatus.BT_SUCCESS: { pNode.Clear(); continue; } case EBTStatus.BT_FAILURE: { mActiveIndex = -1; mIsRunning = false; pNode.Clear(); return(EBTStatus.BT_FAILURE); } } } mActiveIndex = -1; mIsRunning = false; return(EBTStatus.BT_SUCCESS); }