// 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); }
private void ResetAction() { currentAction = null; status = BT_Status.WAITING; }
private void EndUpdate(BT_Status current_status) { myStatus = current_status; }