Exemplo n.º 1
0
        public void Debug(BehaviorTreeDesigner behaviorTree)
        {
            if (behaviorTree == null)
            {
                MainForm.Instance.ShowMessage("行为树为空");
                return;
            }

            m_Nodes.Clear();
            VerifyInfo verifyBehaviorTree = behaviorTree.VerifyBehaviorTree();

            if (verifyBehaviorTree.HasError)
            {
                MainForm.Instance.ShowMessage("确保行为树编辑正确后才能调试\n" + verifyBehaviorTree.Msg);
                return;
            }

            for (int i = 0; i < behaviorTree.Nodes.Count; i++)
            {
                NodeDesigner node = behaviorTree.Nodes[i];
                if (node.StartNode)
                {
                    m_DebugNode = CreateDebugNode(behaviorTree, node);
                    break;
                }
            }

            State = DebugState.Running;
            ContentUserControl.Instance.OnDebugStart();
            MainForm.Instance.ShowInfo("播放成功 时间:" + DateTime.Now);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 校验行为树数据
        /// </summary>
        /// <returns></returns>
        public VerifyInfo VerifyBehaviorTree()
        {
            VerifyInfo verifyID = VerifyBehaviorTreeID();

            if (verifyID.HasError)
            {
                return(verifyID);
            }

            for (int i = 0; i < m_Groups.Count; i++)
            {
                BehaviorGroupDesigner group = m_Groups[i];

                if (group == null)
                {
                    continue;
                }

                for (int j = 0; j < group.BehaviorTrees.Count; j++)
                {
                    BehaviorTreeDesigner behaviorTree = group.BehaviorTrees[j];
                    if (behaviorTree != null)
                    {
                        VerifyInfo verifyBehaviorTree = behaviorTree.VerifyBehaviorTree();
                        if (verifyBehaviorTree.HasError)
                        {
                            return(verifyBehaviorTree);
                        }
                    }
                }
            }

            for (int i = 0; i < m_BehaviorTrees.Count; i++)
            {
                BehaviorTreeDesigner behaviorTree = m_BehaviorTrees[i];
                if (behaviorTree != null)
                {
                    VerifyInfo verifyBehaviorTree = behaviorTree.VerifyBehaviorTree();
                    if (verifyBehaviorTree.HasError)
                    {
                        return(verifyBehaviorTree);
                    }
                }
            }
            return(VerifyInfo.DefaultVerifyInfo);
        }
        private void enterBTN_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(textBox1.Text.Trim()))
            {
                MainForm.Instance.ShowMessage("BehaviorTreeID不能为空");
                MainForm.Instance.ShowInfo("BehaviorTreeID不能为空");
                return;
            }

            string behaviorTreeId = textBox1.Text.Trim();
            string behaviorName   = textBox3.Text.Trim();

            if (m_BehaviorTree.ID != behaviorTreeId)
            {
                if (MainForm.Instance.BehaviorTreeData.ExistBehaviorTree(behaviorTreeId))
                {
                    MainForm.Instance.ShowMessage(string.Format("已存在BehaviorTreeID:{0}", behaviorTreeId));
                    MainForm.Instance.ShowInfo(string.Format("已存在BehaviorTreeID:{0}", behaviorTreeId));
                    return;
                }
            }

            m_EditBehaviorTree.ID       = behaviorTreeId;
            m_EditBehaviorTree.Describe = textBox2.Text.Trim();
            m_EditBehaviorTree.Name     = textBox3.Text.Trim();

            //检验行为树是否合法
            VerifyInfo verifyBehaviorTree = m_EditBehaviorTree.VerifyBehaviorTree();

            if (verifyBehaviorTree.HasError)
            {
                MainForm.Instance.ShowMessage(verifyBehaviorTree.Msg);
                return;
            }

            string editContent = XmlUtility.ObjectToString(m_EditBehaviorTree);

            if (editContent != m_BehaviorTreeContent)
            {
                m_BehaviorTree.UpdateBehaviorTree(m_EditBehaviorTree);
                MainForm.Instance.ShowInfo(string.Format("更新行为树:{0}成功 时间:{1}", m_EditBehaviorTree.ID, DateTime.Now));
            }

            MainForm.Instance.Exec(OperationType.UpdateBehaviorTree, m_BehaviorTree);
            this.Close();
        }
Exemplo n.º 4
0
        /// <summary>
        /// 校验行为树数据
        /// </summary>
        /// <returns></returns>
        public VerifyInfo VerifyBehaviorTree()
        {
            VerifyInfo verifyID = VerifyBehaviorTreeID();

            if (verifyID.HasError)
            {
                return(verifyID);
            }

            for (int i = 0; i < m_BehaviorTrees.Count; i++)
            {
                BehaviorTreeDesigner behaviorTree = m_BehaviorTrees[i];
                if (behaviorTree != null)
                {
                    VerifyInfo verifyBehaviorTree = behaviorTree.VerifyBehaviorTree();
                    if (verifyBehaviorTree.HasError)
                    {
                        return(verifyBehaviorTree);
                    }
                }
            }
            return(VerifyInfo.DefaultVerifyInfo);
        }