コード例 #1
0
ファイル: DecisionCenter.cs プロジェクト: ALunGame/LCECS
        //创建决策
        private void CreateDec(DecTrees DecTrees)
        {
            //实体
            foreach (string key in DecTrees.EntityTrees.Keys)
            {
                EntityDecGroup group = (EntityDecGroup)Enum.Parse(typeof(EntityDecGroup), key);

                //创建树
                NodeDataJson nodeJson = DecTrees.EntityTrees[key];
                Node         rootNode = Node.CreateNodeInstance(nodeJson);
                Node.CreateNodeRelation(rootNode, nodeJson.ChildNodes);

                BaseEntityDecision decision = new BaseEntityDecision(rootNode);;
                EntityDesDict.Add((int)group, decision);
            }

            //世界
            foreach (string key in DecTrees.WorldTrees.Keys)
            {
                WorldDecGroup group = (WorldDecGroup)Enum.Parse(typeof(WorldDecGroup), key);

                //创建树
                NodeDataJson nodeJson = DecTrees.WorldTrees[key];
                Node         rootNode = Node.CreateNodeInstance(nodeJson);
                Node.CreateNodeRelation(rootNode, nodeJson.ChildNodes);

                BaseWorldDecision decision = new BaseWorldDecision(rootNode);
                WorldDesDict.Add((int)group, decision);
            }
        }
コード例 #2
0
ファイル: DecisionCenter.cs プロジェクト: ALunGame/LCECS
        public void Init()
        {
            TextAsset jsonData = ECSLocate.Factory.GetProduct <TextAsset>(FactoryType.Asset, null, ECSDefinitionPath.DecTreePath);
            DecTrees  decTrees = LitJson.JsonMapper.ToObject <DecTrees>(jsonData.text);

            SetDecTrees(decTrees);
        }
コード例 #3
0
        private static void OpenWindow()
        {
            if (EDTool.CheckFileInPath(Application.dataPath + DecPath))
            {
                string dataJson = EDTool.ReadText(Application.dataPath + DecPath);
                MDecTrees = LitJson.JsonMapper.ToObject <DecTrees>(dataJson);
            }
            else
            {
                MDecTrees = new DecTrees();
            }

            if (EDTool.CheckFileInPath(Application.dataPath + BevPath))
            {
                string dataJson = EDTool.ReadText(Application.dataPath + BevPath);
                MBevTrees = LitJson.JsonMapper.ToObject <BevTrees>(dataJson);
            }
            else
            {
                MBevTrees = new BevTrees();
            }
            InitJson();

            NodeEditorWindow window = GetWindow <NodeEditorWindow>();

            window.titleContent = new GUIContent("决策及行为树编辑");

            if (EditorApplication.isPlaying == true)
            {
                Timer = Time.realtimeSinceStartup;
            }
        }
コード例 #4
0
ファイル: DecisionCenter.cs プロジェクト: ALunGame/LCECS
 //设置决策树
 private void SetDecTrees(DecTrees trees)
 {
     if (trees == null)
     {
         return;
     }
     CreateDec(trees);
 }
コード例 #5
0
 private void OnDestroy()
 {
     SaveJson();
     MDecTrees      = null;
     MBevTrees      = null;
     curConnectNode = null;
     ShowDec        = true;
 }
コード例 #6
0
        private static void InitJson()
        {
            //决策
            DecTrees TempDecTrees = new DecTrees();

            TempDecTrees.NodeId = MDecTrees.NodeId;
            foreach (int group in Enum.GetValues(typeof(EntityDecGroup)))
            {
                string       strName = Enum.GetName(typeof(EntityDecGroup), group);
                NodeDataJson oldJson = null;
                if (MDecTrees.EntityTrees.ContainsKey(strName))
                {
                    oldJson = MDecTrees.EntityTrees[strName];
                }
                if (oldJson == null)
                {
                    oldJson = CreateNodeJson(NodeType.Root, typeof(NodeRoot).FullName, "根节点");
                }
                TempDecTrees.EntityTrees.Add(strName, oldJson);
            }
            foreach (int group in Enum.GetValues(typeof(WorldDecGroup)))
            {
                string       strName = Enum.GetName(typeof(WorldDecGroup), group);
                NodeDataJson oldJson = null;
                if (MDecTrees.WorldTrees.ContainsKey(strName))
                {
                    oldJson = MDecTrees.WorldTrees[strName];
                }
                if (oldJson == null)
                {
                    oldJson = CreateNodeJson(NodeType.Root, typeof(NodeRoot).FullName, "根节点");
                }
                TempDecTrees.WorldTrees.Add(strName, oldJson);
            }
            MDecTrees = TempDecTrees;

            //行为
            BevTrees TempBevTrees = new BevTrees();

            TempBevTrees.NodeId = MBevTrees.NodeId;
            foreach (int group in Enum.GetValues(typeof(EntityReqId)))
            {
                string       strName = Enum.GetName(typeof(EntityReqId), group);
                NodeDataJson oldJson = null;
                if (MBevTrees.EntityTrees.ContainsKey(strName))
                {
                    oldJson = MBevTrees.EntityTrees[strName];
                }
                if (oldJson == null)
                {
                    oldJson = CreateNodeJson(NodeType.Root, typeof(NodeRoot).FullName, "根节点");
                }
                TempBevTrees.EntityTrees.Add(strName, oldJson);
            }
            foreach (int group in Enum.GetValues(typeof(WorldReqId)))
            {
                string       strName = Enum.GetName(typeof(WorldReqId), group);
                NodeDataJson oldJson = null;
                if (MBevTrees.WorldTrees.ContainsKey(strName))
                {
                    oldJson = MBevTrees.WorldTrees[strName];
                }
                if (oldJson == null)
                {
                    oldJson = CreateNodeJson(NodeType.Root, typeof(NodeRoot).FullName, "根节点");
                }
                TempBevTrees.WorldTrees.Add(strName, oldJson);
            }
            MBevTrees = TempBevTrees;
        }