protected override int onUpdate(TBTWorkingData wData) { TBTActionPrioritizedSelectorContext thisContext = getContext <TBTActionPrioritizedSelectorContext>(wData); int runningState = TBTRunningStatus.FINISHED; // 如果切换节点index了,那么执行转换 // 那么现在就是上次选择节点和当前节点一致了 if (thisContext.currentSelectedIndex != thisContext.lastSelectedIndex) { if (IsIndexValid(thisContext.lastSelectedIndex)) { TBTAction node = GetChild <TBTAction>(thisContext.lastSelectedIndex); node.Transition(wData); } thisContext.lastSelectedIndex = thisContext.currentSelectedIndex; } // 更新当前节点,如果当前节点状态结束,那么设置当前节点为非法 if (IsIndexValid(thisContext.lastSelectedIndex)) { TBTAction node = GetChild <TBTAction>(thisContext.lastSelectedIndex); runningState = node.Update(wData); if (TBTRunningStatus.IsFinished(runningState)) { // 这里应该用Transition thisContext.lastSelectedIndex = -1; } } return(runningState); }
protected override int onUpdate(TBTWorkingData wData) { TBTActionPrioritizedSelectorContext thisContext = getContext <TBTActionPrioritizedSelectorContext>(wData); int runningState = TBTRunningStatus.FINISHED; if (thisContext.currentSelectedIndex != thisContext.lastSelectedIndex) { if (IsIndexValid(thisContext.lastSelectedIndex)) { TBTAction node = GetChild <TBTAction>(thisContext.lastSelectedIndex); node.Transition(wData); } thisContext.lastSelectedIndex = thisContext.currentSelectedIndex; } if (IsIndexValid(thisContext.lastSelectedIndex)) { TBTAction node = GetChild <TBTAction>(thisContext.lastSelectedIndex); runningState = node.Update(wData); if (TBTRunningStatus.IsFinished(runningState)) { thisContext.lastSelectedIndex = -1; } } return(runningState); }
protected override void onTransition(TBTWorkingData wData) { TBTActionPrioritizedSelectorContext thisContext = getContext <TBTActionPrioritizedSelectorContext>(wData); TBTAction node = GetChild <TBTAction>(thisContext.lastSelectedIndex); if (node != null) { node.Transition(wData); } thisContext.lastSelectedIndex = -1; }
protected override void onTransition(TBTWorkingData wData) { TBTActionTimerContext thisContext = getContext <TBTActionTimerContext>(wData); if (IsIndexValid(0)) { TBTAction node = GetChild <TBTAction>(0); node.Transition(wData); } thisContext.lastTime = -1; }
protected override void onTransition(TBTWorkingData wData) { TBTActionSequenceContext thisContext = getContext <TBTActionSequenceContext>(wData); TBTAction node = GetChild <TBTAction>(thisContext.currentSelectedIndex); if (node != null) { node.Transition(wData); } thisContext.currentSelectedIndex = -1; }
protected override void onTransition(TBTWorkingData wData) { TBTActionLoopContext thisContext = getContext <TBTActionLoopContext>(wData); if (IsIndexValid(0)) { TBTAction node = GetChild <TBTAction>(0); node.Transition(wData); } thisContext.currentCount = 0; }
protected override void onTransition(TBTWorkingData wData) { var thisContext = getContext <TBTActionParallelContext>(wData); for (int i = 0; i < GetChildCount(); ++i) { TBTAction node = GetChild <TBTAction>(i); node.Transition(wData); } //clear running status initListTo <int>(thisContext.runningStatus, TBTRunningStatus.EXECUTING); }