/// <summary> /// 执行之后 /// </summary> /// <param name="context"></param> /// <param name="result"></param> protected virtual void OnExit(BTContext context, BTResult result) { }
/// <summary> /// Session结束 /// </summary> /// <param name="context"></param> /// <param name="result"></param> protected virtual void OnClose(BTContext context, BTResult result) { }
private void _close(BTContext context, BTResult result) { _sessionOpen = false; OnClose(context, result); }
private void _exit(BTContext context, BTResult result) { OnExit(context, result); }
private BTResult _MuteResult(BTResult r) { return(MuteResult == null ? r : MuteResult); }
protected override BTResult OnTick(BTContext context) { if (m_Children == null || m_Children.Count == 0) { return(BTResult.Success); } BTResult status = BTResult.Success; int numberOfFailures = 0; int numberOfSuccesses = 0; int numberOfRunning = 0; for (int i = 0; i < m_Children.Count; i++) { BTResult childStatus = m_Children[i].Tick_(context); if (childStatus == BTResult.Success) { numberOfSuccesses++; } else if (childStatus == BTResult.Failed) { numberOfFailures++; } else if (childStatus == BTResult.Running) { numberOfRunning++; } } if ((m_failOnAny && numberOfFailures > 0) || (m_succeedOnAny && numberOfSuccesses > 0)) { if (m_failOnTie) { if (m_failOnAny && numberOfFailures > 0) { status = BTResult.Failed; } else if (m_succeedOnAny && numberOfSuccesses > 0) { status = BTResult.Success; } } else { if (m_succeedOnAny && numberOfSuccesses > 0) { status = BTResult.Success; } else if (m_failOnAny && numberOfFailures > 0) { status = BTResult.Failed; } } } else { if (numberOfSuccesses == m_Children.Count) { status = BTResult.Success; } else if (numberOfFailures == m_Children.Count) { status = BTResult.Failed; } else { status = BTResult.Running; } } return(status); }