public static BehaviorTreeTask CreateBehaviorTreeTask(string relativePath) { BehaviorTree behaviorTree = null; if (Workspace.BehaviorTrees.ContainsKey(relativePath)) { behaviorTree = Workspace.BehaviorTrees.get_Item(relativePath); } else { bool flag = Workspace.Load(relativePath); if (flag) { behaviorTree = Workspace.BehaviorTrees.get_Item(relativePath); } } if (behaviorTree != null) { BehaviorTask behaviorTask = behaviorTree.CreateAndInitTask(); BehaviorTreeTask behaviorTreeTask = behaviorTask as BehaviorTreeTask; if (!Workspace.ms_allBehaviorTreeTasks.ContainsKey(relativePath)) { Workspace.ms_allBehaviorTreeTasks.set_Item(relativePath, new Workspace.BTItem_t()); } Workspace.BTItem_t bTItem_t = Workspace.ms_allBehaviorTreeTasks.get_Item(relativePath); if (!bTItem_t.bts.Contains(behaviorTreeTask)) { bTItem_t.bts.Add(behaviorTreeTask); } return(behaviorTreeTask); } return(null); }
public static void DestroyBehaviorTreeTask(BehaviorTreeTask behaviorTreeTask, Agent agent) { if (behaviorTreeTask != null) { if (Workspace.ms_allBehaviorTreeTasks.ContainsKey(behaviorTreeTask.GetName())) { Workspace.BTItem_t bTItem_t = Workspace.ms_allBehaviorTreeTasks.get_Item(behaviorTreeTask.GetName()); bTItem_t.bts.Remove(behaviorTreeTask); if (agent != null) { bTItem_t.agents.Remove(agent); } } BehaviorTask.DestroyTask(behaviorTreeTask); } }
public static void RecordBTAgentMapping(string relativePath, Agent agent) { if (Workspace.ms_allBehaviorTreeTasks == null) { Workspace.ms_allBehaviorTreeTasks = new DictionaryView <string, Workspace.BTItem_t>(); } if (!Workspace.ms_allBehaviorTreeTasks.ContainsKey(relativePath)) { Workspace.ms_allBehaviorTreeTasks.set_Item(relativePath, new Workspace.BTItem_t()); } Workspace.BTItem_t bTItem_t = Workspace.ms_allBehaviorTreeTasks.get_Item(relativePath); if (bTItem_t.agents.IndexOf(agent) == -1) { bTItem_t.agents.Add(agent); } }