public override void OnUpdate(float deltatime) { BaseNode childNode = m_CompositeNode.Childs[0]; childNode.Run(deltatime); ENodeStatus childNodeStatus = childNode.Status; if (childNodeStatus == ENodeStatus.Error) { m_CompositeNode.Status = ENodeStatus.Error; return; } if (childNodeStatus == ENodeStatus.Succeed) { m_CompositeNode.Status = ENodeStatus.Failed; return; } if (childNodeStatus == ENodeStatus.Failed) { m_CompositeNode.Status = ENodeStatus.Succeed; return; } }
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); ENodeStatus childNodeStatus = childNode.Status; if (childNodeStatus == ENodeStatus.Error) { m_CompositeNode.Status = ENodeStatus.Error; return; } if (childNodeStatus == ENodeStatus.Succeed) { m_CompositeNode.Status = ENodeStatus.Succeed; return; } if (childNodeStatus == ENodeStatus.Failed) { m_CompositeNode.RunningNodeIndex++; i++; if (m_CompositeNode.RunningNodeIndex >= m_Children.Count) { m_CompositeNode.Status = ENodeStatus.Failed; return; } } } }
public override void OnUpdate(float deltatime) { CurTime += deltatime; BaseNode childNode = m_CompositeNode.Childs[0]; childNode.Run(deltatime); ENodeStatus childNodeStatus = childNode.Status; if (childNodeStatus == ENodeStatus.Error) { m_CompositeNode.Status = ENodeStatus.Error; return; } if (CurTime >= Duration / 1000f) { m_CompositeNode.Status = ENodeStatus.Succeed; return; } if (childNodeStatus == ENodeStatus.Failed || childNodeStatus == ENodeStatus.Succeed) { childNode.Reset(); } }
public override void OnUpdate(float deltatime) { BaseNode childNode = m_CompositeNode.Childs[0]; childNode.Run(deltatime); ENodeStatus childNodeStatus = childNode.Status; if (childNodeStatus == ENodeStatus.Error) { m_CompositeNode.Status = ENodeStatus.Error; return; } if (childNodeStatus == ENodeStatus.Failed || childNodeStatus == ENodeStatus.Succeed) { CurTimes++; if (m_LoopTimes != -1 && CurTimes >= m_LoopTimes) { m_CompositeNode.Status = ENodeStatus.Succeed; return; } //重置子节点状态 childNode.Reset(); } }
public override void OnUpdate(float deltatime) { m_CurFrames++; BaseNode childNode = m_CompositeNode.Childs[0]; childNode.Run(deltatime); ENodeStatus childNodeStatus = childNode.Status; if (childNodeStatus == ENodeStatus.Error) { m_CompositeNode.Status = ENodeStatus.Error; return; } if (m_CurFrames >= m_Frames) { m_CompositeNode.Status = ENodeStatus.Succeed; return; } if (childNodeStatus == ENodeStatus.Failed || childNodeStatus == ENodeStatus.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); ENodeStatus childNodeStatus = childNode.Status; if (childNodeStatus == ENodeStatus.Running) { return; } if (childNodeStatus == ENodeStatus.Error) { m_CompositeNode.Status = childNodeStatus; return; } if (m_CompositeNode.RunningNodeIndex == 0) { if (childNodeStatus == ENodeStatus.Succeed) { m_CompositeNode.RunningNodeIndex = 1; i = 1; } else if (childNodeStatus == ENodeStatus.Failed) { m_CompositeNode.RunningNodeIndex = 2; i = 2; } } else { if (childNodeStatus == ENodeStatus.Succeed) { m_CompositeNode.Status = ENodeStatus.Succeed; return; } if (childNodeStatus == ENodeStatus.Failed) { m_CompositeNode.Status = ENodeStatus.Succeed; return; } } } }
public override void OnUpdate(float deltatime) { BaseNode childNode = m_CompositeNode.Childs[m_CompositeNode.RunningNodeIndex]; childNode.Run(deltatime); ENodeStatus childNodeStatus = childNode.Status; if (childNodeStatus == ENodeStatus.Error) { m_CompositeNode.Status = ENodeStatus.Error; return; } if (childNodeStatus > ENodeStatus.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); ENodeStatus childNodeStatus = childNode.Status; if (childNodeStatus == ENodeStatus.Failed) { failCount++; if (m_FailurePolicy == FAILURE_POLICY.FAIL_ON_ONE) { m_CompositeNode.Status = ENodeStatus.Failed; break; } else if (m_FailurePolicy == FAILURE_POLICY.FAIL_ON_ALL && failCount == m_CompositeNode.Childs.Count) { m_CompositeNode.Status = ENodeStatus.Failed; } } else if (childNodeStatus == ENodeStatus.Succeed) { successCount++; if (m_SuccessPolicy == SUCCESS_POLICY.SUCCEED_ON_ONE) { m_CompositeNode.Status = ENodeStatus.Succeed; } else if (m_SuccessPolicy == SUCCESS_POLICY.SUCCEED_ON_ALL && successCount == m_CompositeNode.Childs.Count) { m_CompositeNode.Status = ENodeStatus.Succeed; } } else if (childNodeStatus == ENodeStatus.Error) { m_CompositeNode.Status = ENodeStatus.Error; } } }
public override void OnUpdate(float deltatime) { m_SelectorNode.Run(deltatime); ENodeStatus childNodeStatus = m_SelectorNode.Status; if (childNodeStatus == ENodeStatus.Error) { m_CompositeNode.Status = ENodeStatus.Error; return; } if (childNodeStatus == ENodeStatus.Succeed) { m_CompositeNode.Status = ENodeStatus.Succeed; return; } if (childNodeStatus == ENodeStatus.Failed) { m_CompositeNode.Status = ENodeStatus.Failed; } }
private void ChangeState(IEnumerable<Node> nodes, ENodeStatus status, bool force = false) { if (force || Utils.Confirm("Сменить статус \"{0}\" на \"{1}\"?", GetNodesName(nodes), status.Tag())) { foreach (Node node in nodes) { node.process = false; node.status = status; } ApplyChanges(nodes); } }