protected void InitBeeHIVE() { if (behaviorTreeObj == null) { Debug.LogWarning("No behavior tree was asigned to " + gameObject.name); return; } tree = BeeHIVELoader.LoadTree(behaviorTreeObj); tree.SetSource(this); StartCoroutine("RunBhvTree"); }
void SaveTree(BH_BehaviorTree tree, string name) { List <BeeHIVEAgent> agents = GetReferencesThatUse(name); string filepath = "Assets/BeeHIVE/Trees/" + name + ".asset"; ScriptableTree sTree = ScriptableObject.CreateInstance <ScriptableTree> (); byte [] buffer = new byte[5122]; BinaryFormatter bf = new BinaryFormatter(); MemoryStream s = new MemoryStream(buffer); bf.Serialize(s, tree); sTree.behaviorTreeData = buffer; AssetDatabase.CreateAsset(sTree, filepath); AssetDatabase.SaveAssets(); if (agents.Count > 0) { UpdateReferences(agents, name); } }
void BuildTree(string treeName) { BH_BehaviorTree tree = new BH_BehaviorTree(); for (int i = 0; i < nodes.Count; i++) { if (nodes[i].myNode is BH_Composite) { if (nodes[i].amountOfChildren == 0) { continue; } for (int j = 0; j < nodes[i].amountOfChildren; j++) { (nodes[i].myNode as BH_Composite).AddChild(nodes[i].children[j].myNode); } } else if (nodes[i].myNode is BH_Decorator) { if (nodes[i].amountOfChildren == 0) { continue; } (nodes[i].myNode as BH_Decorator).SetChild(nodes[i].children[0].myNode); } else { (nodes[i].myNode as BH_Leaf).SetMethodName(nodes[i].methodName); } tree.nodes.Add(nodes[i].myNode); } SaveTree(tree, treeName); }