Ejemplo n.º 1
0
    // Update is called once per frame
    virtual public void Update()
    {
        BT_Status current_status = myStatus;

        if (current_action == null)
        {
            if (MakeDecision())
            {
                current_status = current_action.StartAction();
                if (current_action.isFinish)
                {
                    current_status = EndAction();
                }
            }
            EndUpdate(current_status);
            return;
        }

        if (myStatus == BT_Status.WAITING)
        {
            if (MakeDecision())
            {
                current_status = current_action.StartAction();
                if (current_action.isFinish)
                {
                    current_status = EndAction();
                }
            }
            EndUpdate(current_status);
            return;
        }
        if (current_action.isInterruptible)
        {
            if (MakeDecision())
            {
                current_status = current_action.StartAction();
                if (current_action.isFinish)
                {
                    current_status = EndAction();
                }
                EndUpdate(current_status);
                return;
            }
        }
        if (current_action.isFinish)
        {
            current_status = EndAction();
            EndUpdate(current_status);
            return;
        }
        current_status = current_action.UpdateAction();
        EndUpdate(current_status);
    }
Ejemplo n.º 2
0
 private void ResetAction()
 {
     currentAction = null;
     status        = BT_Status.WAITING;
 }
Ejemplo n.º 3
0
 private void EndUpdate(BT_Status current_status)
 {
     myStatus = current_status;
 }