public override void OnUpdate(float deltatime) { m_CurFrames++; BaseNode childNode = m_CompositeNode.Childs[0]; childNode.Run(deltatime); NodeStatus childNodeStatus = childNode.Status; if (childNodeStatus == NodeStatus.Error) { m_CompositeNode.Status = NodeStatus.Error; return; } if (m_CurFrames >= m_Frames) { m_CompositeNode.Status = NodeStatus.Succeed; return; } if (childNodeStatus == NodeStatus.Failed || childNodeStatus == NodeStatus.Succeed) { childNode.Reset(); } }
public override void OnUpdate(float deltatime) { for (int i = m_CompositeNode.RunningNodeIndex; i < m_CompositeNode.Childs.Count;) { BaseNode childNode = m_Children[i]; childNode.Run(deltatime); NodeStatus childNodeStatus = childNode.Status; if (childNodeStatus == NodeStatus.Error) { m_CompositeNode.Status = NodeStatus.Error; return; } if (childNodeStatus == NodeStatus.Failed) { m_CompositeNode.Status = NodeStatus.Failed; return; } if (childNode.Status == NodeStatus.Succeed) { m_CompositeNode.RunningNodeIndex++; i++; if (m_CompositeNode.RunningNodeIndex == m_Children.Count) { m_CompositeNode.Status = NodeStatus.Succeed; } } } }
public override void OnUpdate(float deltatime) { BaseNode childNode = m_CompositeNode.Childs[0]; childNode.Run(deltatime); NodeStatus childNodeStatus = childNode.Status; if (childNodeStatus == NodeStatus.Error) { m_CompositeNode.Status = NodeStatus.Error; return; } if (childNodeStatus == NodeStatus.Failed || childNodeStatus == NodeStatus.Succeed) { CurTimes++; if (m_LoopTimes != -1 && CurTimes >= m_LoopTimes) { m_CompositeNode.Status = NodeStatus.Succeed; return; } //重置子节点状态 childNode.Reset(); } }
public override void OnUpdate(float deltatime) { CurTime += deltatime; BaseNode childNode = m_CompositeNode.Childs[0]; childNode.Run(deltatime); NodeStatus childNodeStatus = childNode.Status; if (childNodeStatus == NodeStatus.Error) { m_CompositeNode.Status = NodeStatus.Error; return; } if (CurTime >= Duration / 1000f) { m_CompositeNode.Status = NodeStatus.Succeed; return; } if (childNodeStatus == NodeStatus.Failed || childNodeStatus == NodeStatus.Succeed) { childNode.Reset(); } }
public override void OnUpdate(float deltatime) { for (int i = m_CompositeNode.RunningNodeIndex; i < m_CompositeNode.Childs.Count;) { BaseNode childNode = m_CompositeNode.Childs[m_CompositeNode.RunningNodeIndex]; childNode.Run(deltatime); NodeStatus childNodeStatus = childNode.Status; if (childNodeStatus == NodeStatus.Running) { return; } if (childNodeStatus == NodeStatus.Error) { m_CompositeNode.Status = childNodeStatus; return; } if (m_CompositeNode.RunningNodeIndex == 0) { if (childNodeStatus == NodeStatus.Succeed) { m_CompositeNode.RunningNodeIndex = 1; i = 1; } else if (childNodeStatus == NodeStatus.Failed) { m_CompositeNode.RunningNodeIndex = 2; i = 2; } } else { if (childNodeStatus == NodeStatus.Succeed) { m_CompositeNode.Status = NodeStatus.Succeed; return; } if (childNodeStatus == NodeStatus.Failed) { m_CompositeNode.Status = NodeStatus.Succeed; return; } } } }
public override void OnUpdate(float deltatime) { BaseNode childNode = m_CompositeNode.Childs[m_CompositeNode.RunningNodeIndex]; childNode.Run(deltatime); NodeStatus childNodeStatus = childNode.Status; if (childNodeStatus == NodeStatus.Error) { m_CompositeNode.Status = NodeStatus.Error; return; } if (childNodeStatus > NodeStatus.Running) { m_CompositeNode.Status = childNodeStatus; } }
public override void OnUpdate(float deltatime) { int failCount = 0; int successCount = 0; for (int i = 0; i < m_CompositeNode.Childs.Count; i++) { BaseNode childNode = m_CompositeNode.Childs[i]; childNode.Run(deltatime); NodeStatus childNodeStatus = childNode.Status; if (childNodeStatus == NodeStatus.Failed) { failCount++; if (m_FailurePolicy == FAILURE_POLICY.FAIL_ON_ONE) { m_CompositeNode.Status = NodeStatus.Failed; break; } else if (m_FailurePolicy == FAILURE_POLICY.FAIL_ON_ALL && failCount == m_CompositeNode.Childs.Count) { m_CompositeNode.Status = NodeStatus.Failed; } } else if (childNodeStatus == NodeStatus.Succeed) { successCount++; if (m_SuccessPolicy == SUCCESS_POLICY.SUCCEED_ON_ONE) { m_CompositeNode.Status = NodeStatus.Succeed; } else if (m_SuccessPolicy == SUCCESS_POLICY.SUCCEED_ON_ALL && successCount == m_CompositeNode.Childs.Count) { m_CompositeNode.Status = NodeStatus.Succeed; } } else if (childNodeStatus == NodeStatus.Error) { m_CompositeNode.Status = NodeStatus.Error; } } }
public override void OnUpdate(float deltatime) { m_SelectorNode.Run(deltatime); NodeStatus childNodeStatus = m_SelectorNode.Status; if (childNodeStatus == NodeStatus.Error) { m_CompositeNode.Status = NodeStatus.Error; return; } if (childNodeStatus == NodeStatus.Succeed) { m_CompositeNode.Status = NodeStatus.Succeed; return; } if (childNodeStatus == NodeStatus.Failed) { m_CompositeNode.Status = NodeStatus.Failed; } }