Exemple #1
0
    protected override BTRunningStatus DoTick(BTInput input, ref BTOutput output)
    {
        BTRunningStatus runningStatus = base.DoTick(input, ref output);

        switch (_status)
        {
        case BTNodeStatus.Ready:
            DoEnter(input);
            _needExit = true;
            _status   = BTNodeStatus.Running;
            SetActiveNode(this);
            break;

        case BTNodeStatus.Running:
            runningStatus = DoExecute(input, ref output);
            SetActiveNode(this);
            if (runningStatus == BTRunningStatus.Finish || runningStatus == BTRunningStatus.Error)
            {
                _status = BTNodeStatus.Finish;
            }
            break;

        case BTNodeStatus.Finish:
            if (_needExit)
            {
                DoExit(input, runningStatus);
            }
            _status   = BTNodeStatus.Ready;
            _needExit = false;
            SetActiveNode(null);
            break;
        }

        return(runningStatus);
    }
Exemple #2
0
 protected virtual void DoExit(BTInput _input, BTRunningStatus _status)
 {
 }