public override void OnUpdate(float deltaTime)
        {
            BaseCompositeNode compositeNode = Node as BaseCompositeNode;
            BaseNode          runningNode   = compositeNode.Children[compositeNode.RunningNodeIndex];

            runningNode.OnUpdate(deltaTime);

            switch (runningNode.Status)
            {
            case NodeStatus.SUCCESS:
            {
                compositeNode.Status = NodeStatus.SUCCESS;
                break;
            }

            case NodeStatus.FAILED:
            {
                compositeNode.RunningNodeIndex++;
                //所有运行失败将返回失败
                if (compositeNode.RunningNodeIndex >= compositeNode.Children.Count)
                {
                    compositeNode.Status = NodeStatus.FAILED;
                    break;
                }

                break;
            }

            case NodeStatus.ERROR:
            {
                compositeNode.Status = NodeStatus.ERROR;
                break;
            }
            }
        }
Beispiel #2
0
        public override void OnAwake()
        {
            BaseCompositeNode compositeNode = Node as BaseCompositeNode;

            if (compositeNode.Children == null || compositeNode.Children.Count != 3)
            {
                compositeNode.Status = NodeStatus.ERROR;
            }

            ConditionNode = compositeNode.Children[0];
        }
Beispiel #3
0
        public override void OnUpdate(float deltaTime)
        {
            BaseCompositeNode compositeNode = Node as BaseCompositeNode;

            if (CurrentRunningIndex == 0)
            {
                ConditionNode.OnUpdate(deltaTime);

                if (ConditionNode.Status == NodeStatus.ERROR)
                {
                    compositeNode.Status = NodeStatus.ERROR;
                    return;
                }

                if (ConditionNode.Status == NodeStatus.RUNNING)
                {
                    return;
                }
            }

            if (ConditionNode.Status == NodeStatus.SUCCESS)
            {
                CurrentRunningIndex = 1;
            }
            else if (ConditionNode.Status == NodeStatus.FAILED)
            {
                CurrentRunningIndex = 2;
            }

            BaseNode CurNode = compositeNode.Children[CurrentRunningIndex];

            CurNode.OnUpdate(deltaTime);

            if (CurNode.Status == NodeStatus.ERROR)
            {
                compositeNode.Status = NodeStatus.ERROR;
                return;
            }

            compositeNode.Status = CurNode.Status;
        }
Beispiel #4
0
 public void setRootNode(BaseCompositeNode rootNode)
 {
     _rootNode = rootNode;
 }