Ejemplo n.º 1
0
    public void Init(BehaviourTreeEditor btAsset, GameObject go)
    {
        List <Type> behavNodes = GetAllBehaviourNode();

        nodes = new List <BaseNodeRuntime> ();
        List <BaseBehaviourNode> nodesToStart = new List <BaseBehaviourNode>();
        BaseNodeRuntime          nodeToAdd    = null;

        foreach (BaseNodeEditor node in btAsset.nodes)
        {
            if (node.GetType().Equals(typeof(BehaviourNodeEditor)) || node.GetType().BaseType.Equals(typeof(BehaviourNodeEditor)))
            {
                BehaviourNodeEditor bNode = node as BehaviourNodeEditor;
                foreach (var behav in behavNodes)
                {
                    if (behav.Name.Equals(bNode.nodeName))
                    {
                        nodeToAdd = node.InstantiateRuntimeNode(go, behav);
                        nodesToStart.Add((BaseBehaviourNode)nodeToAdd);
                    }
                }
            }
            else
            {
                nodeToAdd = node.InstantiateRuntimeNode();
            }

            nodes.Add(nodeToAdd);
        }
        if (nodes.Count > 0)
        {
            root = nodes [0];
        }

        // Initialize parameters
        btRuntimeParams = btAsset.btEditorParams;

        // Initialize blackboard
        btRuntimeBlackboard = new BTreeBlackboardRuntime();
        foreach (string item in btAsset.btEditorBlackboard.blackboard)
        {
            btRuntimeBlackboard.blackboard.Add(item, 0f);
        }

        // Call the overrided Start method of all BehaviourNodes
        foreach (BaseBehaviourNode node in nodesToStart)
        {
            node.Start();
        }
    }
Ejemplo n.º 2
0
 void OnEnable()
 {
     parameters = ScriptableObject.CreateInstance <BTreeParameters>();
 }