public override EStatusBTRunning OnTick() { EStatusBTRunning status = EStatusBTRunning.Finish; if (m_Status == EStatusNodeTerminal.Ready) { OnEnter(); m_needExit = true; m_Status = EStatusNodeTerminal.Running; SetActiveNode(this); } if (m_Status == EStatusNodeTerminal.Running) { status = OnExecute(); if (status == EStatusBTRunning.Finish || status == EStatusBTRunning.ErrorTransition) { m_Status = EStatusNodeTerminal.Finish; } } if (m_Status == EStatusNodeTerminal.Finish) { if (m_needExit) { OnExit(); } m_needExit = false; m_Status = EStatusNodeTerminal.Ready; SetActiveNode(null); return(status); } return(status); }
public override EStatusBTRunning OnTick() { EStatusBTRunning bIsFinish = EStatusBTRunning.Finish; if (checkIndex(0)) { Node oBN = m_childNodeList[0]; bIsFinish = oBN.Tick(); if (bIsFinish == EStatusBTRunning.Finish) { if (m_loopCount != kInfiniteLoop) { // 有限循环 ++m_currentCount; if (m_currentCount < m_loopCount) // 作者原版是 == { bIsFinish = EStatusBTRunning.Executing; } } else { // 无限循环 bIsFinish = EStatusBTRunning.Executing; } } } if (bIsFinish != EStatusBTRunning.Executing) { m_currentCount = 0; } return(bIsFinish); }
public override EStatusBTRunning OnTick() { EStatusBTRunning bIsFinish = EStatusBTRunning.Finish; //First Time if (m_currentNodeIndex == BT_InvalidChildNodeIndex) { m_currentNodeIndex = 0; } Node child = m_childNodeList[m_currentNodeIndex]; if (child != null) { bIsFinish = child.Tick(); } if (bIsFinish == EStatusBTRunning.Finish) { ++m_currentNodeIndex; //sequence is over if (m_currentNodeIndex == m_childNodeCount) { m_currentNodeIndex = BT_InvalidChildNodeIndex; } else { bIsFinish = EStatusBTRunning.Executing; } } if (bIsFinish == EStatusBTRunning.ErrorTransition) { m_currentNodeIndex = BT_InvalidChildNodeIndex; } return(bIsFinish); }
public override EStatusBTRunning OnTick() { EStatusBTRunning status = EStatusBTRunning.Finish; // 从cur_index和last_index中选出可用的,赋值给last_index if (checkIndex(m_currentSelectIndex)) { if (m_lastSelectIndex != m_currentSelectIndex) //new select result { if (checkIndex(m_lastSelectIndex)) { Node child = m_childNodeList[m_lastSelectIndex]; child.Transition(); //we need transition } m_lastSelectIndex = m_currentSelectIndex; } } if (checkIndex(m_lastSelectIndex)) { //Running node Node child = m_childNodeList[m_lastSelectIndex]; status = child.Tick(); //clear variable if finish if (status == EStatusBTRunning.Finish) { m_lastSelectIndex = BT_InvalidChildNodeIndex; } } return(status); }
protected virtual EStatusBTRunning OnExecute() { EStatusBTRunning returnStatus = EStatusBTRunning.Finish; if (m_dynamicOnExecute != null) { returnStatus = m_dynamicOnExecute(); } return(returnStatus); }
public override EStatusBTRunning OnTick() { EStatusBTRunning status = EStatusBTRunning.Finish; if (m_isRun) { status = base.OnTick(); } return(status); }