Example #1
0
    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");
    }
Example #2
0
    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);
        }
    }
Example #3
0
    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);
    }