public override EBTResult Tick() { EBTResult tmpResult = EBTResult.Running; IsRunning = true; do { if (!mRepeatForever) { ++mCurrentCount; } if (mCurrentCount > mCount) { tmpResult = EBTResult.Success; IsRunning = false; break; } EBTResult tmpChildResult = ChildNode.Tick(); if (mEndOnFailure && EBTResult.Failed == tmpChildResult) { tmpResult = EBTResult.Failed; IsRunning = false; break; } } while (false); return(tmpResult); }
protected override void OnExit(EBTResult result) { _curChild = 0; if (_child != null) { OnExit(_child, result); _child = null; } base.OnExit(result); }
public override EBTResult Tick() { mTime += Time.deltaTime; EBTResult tmpResult = EBTResult.Running; if (mTime >= mDelay) { tmpResult = ChildNode.Tick(); } return(tmpResult); }
protected void OnExit(BTNode other, EBTResult result) { other.state = result; if (other._it != null) { other._it = null; if (other._stack != null) { other._stack.Clear(); } other.OnExit(result); other._enter = false; } }
public override EBTResult Tick() { mTime += Time.deltaTime; if (mTime >= mInterval) { mTime = 0; EBTResult result = ChildNode.Tick(); return(result); } else { return(EBTResult.Running); } }
protected override void OnExit(EBTResult result) { if (children != null) { for (int i = 0; i < children.Count; ++i) { var child = children[i]; if (child.state == EBTResult.Running) { OnExit(child, result); } } } base.OnExit(result); }
public override EBTResult Tick() { if (0 == ChildNodes.Count) { return(EBTResult.Success); } EBTResult tmpResult = EBTResult.Running; IsRunning = true; for (int i = 0, max = ChildNodes.Count; i < max; i++) { if (mCompleteChildIdxList.Contains(i)) { continue; } BTNode tmpChildNode = ChildNodes[i]; switch (tmpChildNode.Tick()) { case EBTResult.Success: mCompleteChildIdxList.Add(i); if (mCompleteChildIdxList.Count == ChildNodes.Count) { tmpResult = EBTResult.Success; } break; case EBTResult.Failed: tmpResult = EBTResult.Failed; break; } if (EBTResult.Running != tmpResult) { IsRunning = false; Clear(); break; } } return(tmpResult); }
public override EBTResult Tick() { if (!mIsConditionsComplete) { switch (mLogicOpt) { case EBTLogic.And: foreach (BTConditional conditional in mConditionals) { if (!conditional.Check()) { return(EBTResult.Failed); } } break; case EBTLogic.Or: bool anySuccess = false; foreach (BTConditional conditional in mConditionals) { if (conditional.Check()) { anySuccess = true; break; } } if (!anySuccess) { return(EBTResult.Failed); } break; } } mIsConditionsComplete = true; EBTResult tmpResult = ChildNode.Tick(); if (EBTResult.Running == tmpResult) { IsRunning = true; } return(tmpResult); }
public override EBTResult Tick() { if (-1 == mActiveChildIndex) { mActiveChildIndex = 0; } if (mActiveChildIndex >= ChildNodes.Count) { return(EBTResult.Success); } BTNode tmpChildNode = ChildNodes[mActiveChildIndex]; EBTResult tmpResult = EBTResult.Running; IsRunning = true; switch (tmpChildNode.Tick()) { case EBTResult.Success: mActiveChildIndex++; if (mActiveChildIndex >= ChildNodes.Count) { tmpResult = EBTResult.Success; } break; case EBTResult.Failed: IsRunning = false; tmpResult = EBTResult.Failed; break; } if (EBTResult.Running != tmpResult) { Clear(); } return(tmpResult); }
sealed public override EBTResult Tick() { EBTResult tmpTickResult = EBTResult.Success; if (mStatus == EBTActionStatus.Ready) { Enter(); mStatus = EBTActionStatus.Running; } if (mStatus == EBTActionStatus.Running) { tmpTickResult = Execute(); IsRunning = true; if (tmpTickResult != EBTResult.Running) { Exit(); mStatus = EBTActionStatus.Ready; IsRunning = false; } } return(tmpTickResult); }
public override EBTResult Tick() { if (-1 == mActiveChildIndex) { int tmpTotalWeight = 0; for (int i = 0, max = ChildNodes.Count; i < max; ++i) { if (mFailedChildIdxList.Contains(i)) { continue; } tmpTotalWeight += (i >= mChildNodeWeightList.Count ? 1 : mChildNodeWeightList[i]); } int tmpRandonValue = Random.Range(0, tmpTotalWeight); for (int i = 0, max = ChildNodes.Count; i < max; ++i) { if (mFailedChildIdxList.Contains(i)) { continue; } tmpRandonValue -= (i >= mChildNodeWeightList.Count ? 1 : mChildNodeWeightList[i]); if (tmpRandonValue < 0) { mActiveChildIndex = i; break; } } } BTNode tmpChildNode = ChildNodes[mActiveChildIndex]; EBTResult tmpResult = EBTResult.Running; IsRunning = true; switch (tmpChildNode.Tick()) { case EBTResult.Success: tmpResult = EBTResult.Success; break; case EBTResult.Failed: mActiveChildIndex = -1; if (mFailedChildIdxList.Count >= ChildNodes.Count) { tmpResult = EBTResult.Failed; } break; } if (EBTResult.Running != tmpResult) { IsRunning = false; Clear(); } return(tmpResult); }
protected virtual void OnExit(EBTResult result) { }