protected override BTNodeStatus OnUpdate(IAgent agent, Blackboard bb) { //内部条件检测未通过 if (InternalCondition(agent, bb) == false) { return(BTNodeStatus.Failed); } //第一次执行此行为 if (mCurrentState == ActionStateEnum.FirstIn) { OnEnter(agent, bb); mCurrentState = ActionStateEnum.NotFirstIn; } BTNodeStatus status = BTNodeStatus.Finished; //非第一次执行此行为 if (mCurrentState == ActionStateEnum.NotFirstIn) { status = OnExcute(agent, bb); } //若当前行为为持续性行为 if (status == BTNodeStatus.Running) { return(status);//返回 Running } //当前行为已结束(非持续性行为) else { //善后工作(执行退出 + 标志位重置) OnReset(agent, bb); return(status);//返回 Finished } }
public override BTNodeStatus Tick() { if (!checkFunction()) { return(BTNodeStatus.succes); } foreach (BTNode node in inputNodes) { BTNodeStatus result = node.Tick(); switch (result) { case BTNodeStatus.failed: return(BTNodeStatus.failed); case BTNodeStatus.running: return(BTNodeStatus.running); case BTNodeStatus.succes: //only at succes it moves on to the next task break; default: break; } } return(BTNodeStatus.succes); }
protected override BTRunningStatus DoTick(BTInput input, ref BTOutput output) { BTRunningStatus runningStatus = base.DoTick(input, ref output); switch (_status) { case BTNodeStatus.Ready: DoEnter(input); _needExit = true; _status = BTNodeStatus.Running; SetActiveNode(this); break; case BTNodeStatus.Running: runningStatus = DoExecute(input, ref output); SetActiveNode(this); if (runningStatus == BTRunningStatus.Finish || runningStatus == BTRunningStatus.Error) { _status = BTNodeStatus.Finish; } break; case BTNodeStatus.Finish: if (_needExit) { DoExit(input, runningStatus); } _status = BTNodeStatus.Ready; _needExit = false; SetActiveNode(null); break; } return(runningStatus); }
public override BTNodeStatus OnUpdate(FixPoint delta_time) { m_status = BTNodeStatus.True; if (m_children == null) { return(m_status); } for (; m_index < m_children.Count; ++m_index) { BTNodeStatus status = m_children[m_index].OnUpdate(delta_time); if (status == BTNodeStatus.Running) { return(status); } else if (status == BTNodeStatus.False) { m_status = status; } } if (m_index == m_children.Count) { m_index = 0; } return(m_status); }
public override void ResetNode() { base.ResetNode(); m_status_backup = BTNodeStatus.True; m_is_running = false; ResetRuntimeData(); }
public override BTNodeStatus OnUpdate(FixPoint delta_time) { if (m_children == null) { m_status = BTNodeStatus.False; return(m_status); } m_status = BTNodeStatus.Running; if (m_variable_id != -1) { m_context.SetData(m_variable_id, (FixPoint)m_i); } BTNodeStatus child_status = m_children[0].OnUpdate(delta_time); if (child_status != BTNodeStatus.Running) { ++m_i; if (m_i >= m_n) { m_status = BTNodeStatus.True; m_i = 0; } } return(m_status); }
public virtual void ResetNode() { m_status = BTNodeStatus.Unreach; if (m_children != null) { for (int i = 0; i < m_children.Count; ++i) { m_children[i].ResetNode(); } } }
protected override void DoTransition(BTInput _input) { base.DoTransition(_input); if (_needExit) { DoExit(_input, BTRunningStatus.Error); } SetActiveNode(null); _status = BTNodeStatus.Ready; _needExit = false; }
public override BTNodeStatus Tick() { BTNodeStatus result = inputNodes[currentAction].Tick(); if (currentAction == inputNodes.Length - 1 || currentAction == 0) { goingUp = !goingUp; } currentAction += (goingUp)? 1 : -1; return(result); }
public override bool CanActivate() { if (m_behavior_tree == null) { return(false); } if (!m_behavior_tree.HasEntry(BTEntry_CanActivate)) { return(true); } BTNodeStatus bt_status = m_behavior_tree.RunOnce(BTEntry_CanActivate); return(bt_status == BTNodeStatus.True); }
protected override BTNodeStatus Decorate(BTNodeStatus status) { if (status == BTNodeStatus.False) { return(BTNodeStatus.True); } else if (status == BTNodeStatus.True) { return(BTNodeStatus.False); } else { return(status); } }
public override BTNodeStatus OnUpdate(FixPoint delta_time) { BTNodeStatus status = BTNodeStatus.False; if (CanExecute()) { if (m_children != null) { status = m_children[0].OnUpdate(delta_time); } status = this.Decorate(status); PrepareForNextExecute(); } m_status = status; return(m_status); }
public override BTNodeStatus Run() { foreach (BTBaseNode node in nodes) { BTNodeStatus result = node.Run(); switch (result) { case BTNodeStatus.Failed: return(BTNodeStatus.Failed); case BTNodeStatus.Success: continue; case BTNodeStatus.Running: return(BTNodeStatus.Running); } } return(BTNodeStatus.Success); }
public override BTNodeStatus Tick() { BTNodeStatus _status = decoratedNode.Tick(); if (_status == BTNodeStatus.Failed) { return(BTNodeStatus.Success); } else if (_status == BTNodeStatus.Success) { return(BTNodeStatus.Failed); } else { return(BTNodeStatus.Running); } }
public override BTNodeStatus Run() { for (; i < nodes.Length; i++) { BTNodeStatus result = nodes[i].Run(); switch (result) { case BTNodeStatus.Failed: return(BTNodeStatus.Failed); case BTNodeStatus.Success: txt.text = nodes[i].GetType().Name; continue; case BTNodeStatus.Running: txt.text = nodes[i].GetType().Name; return(BTNodeStatus.Running); } } i = 0; return(BTNodeStatus.Success); }
public override BTNodeStatus Tick() { foreach (BTNode _node in inputNodes) { BTNodeStatus _result = _node.Tick(); switch (_result) { case BTNodeStatus.Failed: case BTNodeStatus.Running: return(_result); case BTNodeStatus.Success: continue; } } return(BTNodeStatus.Success); }
public override BTNodeStatus Tick() { foreach (BTNode node in inputNodes) { BTNodeStatus status = node.Tick(); switch (status) { case BTNodeStatus.Failed: continue; case BTNodeStatus.Running: case BTNodeStatus.Succes: return(status); } } return(BTNodeStatus.Succes); }
public override BTNodeStatus OnUpdate(FixPoint delta_time) { m_status = m_status_backup; BTActionBuffer action_buffer = m_context.GetActionBuffer(); action_buffer.AddCurrentActions(this); if (m_is_running) { UpdateAction(delta_time); } else { EnterAction(); } m_status_backup = m_status; return(m_status); }
public override BTNodeStatus Tick() { foreach (BTNode node in inputNodes) { BTNodeStatus result = node.Tick(); switch (result) { case BTNodeStatus.Failed: continue; case BTNodeStatus.Running: return(BTNodeStatus.Running); //kan ook "return result" case BTNodeStatus.Succes: return(BTNodeStatus.Succes); //kan ook "return result" } } return(BTNodeStatus.Failed); }
public override BTNodeStatus Tick() { foreach (BTNode node in inputNodes) { BTNodeStatus result = (interruptWhen.Invoke())? interruptBehaviour.Tick() : node.Tick(); switch (result) { case BTNodeStatus.Failed: case BTNodeStatus.Running: return(result); case BTNodeStatus.Succes: continue; } } return(BTNodeStatus.Succes); }
public BTNodeStatus RunOnce(int entrty_id) { int new_index = EntryID2Index(entrty_id); if (new_index == -1) { return(BTNodeStatus.True); } BTActionBuffer action_buffer = m_context.GetActionBuffer(); //ZZWTODO m_context的数据 action_buffer.Backup(); BTNodeStatus result = m_children[new_index].OnUpdate(FixPoint.Zero); action_buffer.SwapActions(); action_buffer.ExitAllAction(); action_buffer.Restore(); m_children[new_index].ClearRunningTrace(); return(result); }
public override BTNodeStatus Tick() { foreach (BTNode node in inputNodes) { BTNodeStatus result = node.Tick(); switch (result) { case BTNodeStatus.failed: continue; case BTNodeStatus.running: return(BTNodeStatus.running); case BTNodeStatus.succes: return(BTNodeStatus.succes); } } return(BTNodeStatus.failed); }
public override BTNodeStatus Tick() { foreach (BTNode node in inputNodes) { BTNodeStatus result = node.Tick(); switch (result) { case BTNodeStatus.failed: continue; //if the task fails, move to the next task until it isnt failing case BTNodeStatus.running: return(BTNodeStatus.running); case BTNodeStatus.succes: return(BTNodeStatus.succes); } } return(BTNodeStatus.failed); }
public override BTNodeStatus Tick() { blackBoard.robot.Out.WriteLine("Checked func<bool>"); if (!ifThisIsTrue.Invoke()) { return(BTNodeStatus.Failed); } foreach (BTNode node in inputNodes) { BTNodeStatus result = node.Tick(); switch (result) { case BTNodeStatus.Failed: case BTNodeStatus.Running: return(result); case BTNodeStatus.Succes: continue; } } return(BTNodeStatus.Succes); }
public void UpdateBT(NodeBase rootNode, IAgent agent, Blackboard bb) { BTNodeStatus status = rootNode.Update(agent, bb); //HTLogger.Debug(string.Format("根节点为:{0}的行为树运行状态为:{1}", rootNode, status)); }
protected virtual BTNodeStatus Decorate(BTNodeStatus status) { return(status); }
public BTAction(BTAction prototype) : base(prototype) { m_status_backup = BTNodeStatus.True; m_is_running = false; }
public BTAction() { m_status_backup = BTNodeStatus.True; m_is_running = false; }
protected override BTNodeStatus Decorate(BTNodeStatus status) { return(BTNodeStatus.True); }
public BTActionNodeBase() : base() { _status = BTNodeStatus.Ready; _isActiveNode = true; _needExit = false; }