コード例 #1
0
        public static BehaviorTreeTask CreateBehaviorTreeTask(string relativePath)
        {
            BehaviorTree tree = null;

            if (BehaviorTrees.ContainsKey(relativePath))
            {
                tree = BehaviorTrees[relativePath];
            }
            else if (Load(relativePath))
            {
                tree = BehaviorTrees[relativePath];
            }
            if (tree == null)
            {
                return(null);
            }
            BehaviorTreeTask item = tree.CreateAndInitTask() as BehaviorTreeTask;

            if (!ms_allBehaviorTreeTasks.ContainsKey(relativePath))
            {
                ms_allBehaviorTreeTasks[relativePath] = new BTItem_t();
            }
            BTItem_t _t = ms_allBehaviorTreeTasks[relativePath];

            if (!_t.bts.Contains(item))
            {
                _t.bts.Add(item);
            }
            return(item);
        }
コード例 #2
0
 public static void DestroyBehaviorTreeTask(BehaviorTreeTask behaviorTreeTask, Agent agent)
 {
     if (behaviorTreeTask != null)
     {
         if (ms_allBehaviorTreeTasks.ContainsKey(behaviorTreeTask.GetName()))
         {
             BTItem_t _t = ms_allBehaviorTreeTasks[behaviorTreeTask.GetName()];
             _t.bts.Remove(behaviorTreeTask);
             if (agent != null)
             {
                 _t.agents.Remove(agent);
             }
         }
         BehaviorTask.DestroyTask(behaviorTreeTask);
     }
 }
コード例 #3
0
ファイル: Workspace.cs プロジェクト: nusus/behaviac
        /**
        uses the behavior tree in the cache, if not loaded yet, it loads the behavior tree first
        */
        public static BehaviorTreeTask CreateBehaviorTreeTask(string relativePath)
        {
            Debug.Check(string.IsNullOrEmpty(Path.GetExtension(relativePath)), "no extention to specify");
            Debug.Check(Workspace.IsValidPath(relativePath));

            BehaviorTree bt = null;
            if (BehaviorTrees.ContainsKey(relativePath))
            {
                bt = BehaviorTrees[relativePath];
            }
            else
            {
                bool bOk = Workspace.Load(relativePath);

                if (bOk)
                {
                    bt = BehaviorTrees[relativePath];
                }
            }

            if (bt != null)
            {
                BehaviorTask task = bt.CreateAndInitTask();
                Debug.Check(task is BehaviorTreeTask);
                BehaviorTreeTask behaviorTreeTask = task as BehaviorTreeTask;

                if (!ms_allBehaviorTreeTasks.ContainsKey(relativePath))
                {
                    ms_allBehaviorTreeTasks[relativePath] = new BTItem_t();
                }

                BTItem_t btItem = ms_allBehaviorTreeTasks[relativePath];
                if (!btItem.bts.Contains(behaviorTreeTask))
                {
                    btItem.bts.Add(behaviorTreeTask);
                }

                return behaviorTreeTask;
            }

            return null;
        }
コード例 #4
0
ファイル: Workspace.cs プロジェクト: nusus/behaviac
        public static void RecordBTAgentMapping(string relativePath, Agent agent)
        {
            if (ms_allBehaviorTreeTasks == null)
            {
                ms_allBehaviorTreeTasks = new Dictionary<string, BTItem_t>();
            }

            if (!ms_allBehaviorTreeTasks.ContainsKey(relativePath))
            {
                ms_allBehaviorTreeTasks[relativePath] = new BTItem_t();
            }

            BTItem_t btItems = ms_allBehaviorTreeTasks[relativePath];
            //bool bFound = false;

            if (btItems.agents.IndexOf(agent) == -1)
            {
                btItems.agents.Add(agent);
            }
        }
コード例 #5
0
        /**
        uses the behavior tree in the cache, if not loaded yet, it loads the behavior tree first
        */
        public static BehaviorTreeTask CreateBehaviorTreeTask(string relativePath)
        {
            BehaviorTree bt = null;
            if (BehaviorTrees.ContainsKey(relativePath))
            {
                bt = BehaviorTrees[relativePath];
            }
            else
            {
                bool bOk = Workspace.Load(relativePath);

                if (bOk)
                {
                    bt = BehaviorTrees[relativePath];
                }
            }

            if (bt != null)
            {
                BehaviorTask task = bt.CreateAndInitTask();
                Debug.Check(task is BehaviorTreeTask);
                BehaviorTreeTask behaviorTreeTask = task as BehaviorTreeTask;

                if (!ms_allBehaviorTreeTasks.ContainsKey(relativePath))
                {
                    ms_allBehaviorTreeTasks[relativePath] = new BTItem_t();
                }

                BTItem_t btItem = ms_allBehaviorTreeTasks[relativePath];
                if (!btItem.bts.Contains(behaviorTreeTask))
                {
                    btItem.bts.Add(behaviorTreeTask);
                }

                return behaviorTreeTask;
            }

            return null;
        }