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); }
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); } }
/** 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; }
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); } }
/** 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; }