using System.Collections; using System.Collections.Generic; using UnityEngine; using XNode; using RPGCreationKit.BehaviourTree; [CreateNodeMenu("RPGCK_BehaviourTree/RootNode", order = 0)] [System.Serializable] public class RootNode : BTNode { string state; public bool isNpcToNpcDialogue; // Is this a dialogue that doesn't involve the player? [Output(ShowBackingValue.Never)] public Node onExitNode; [Output] public BTNode firstNode; // Use this for initialization protected override void Init() { base.Init(); } // Return the correct value of an output port when requested public override object GetValue(NodePort port) { return null; // Replace this } public override NodeState Execute() { // Its state is the state of the child firstNode = ((BTNode)GetOutputPort("firstNode").Connection.node); switch(m_NodeState) { case NodeState.Failure: m_NodeState = NodeState.Failure; return m_NodeState; case NodeState.Running: case NodeState.Null: // Continue ticking firstNode.Execute(); m_NodeState = firstNode.m_NodeState; return m_NodeState; case NodeState.Success: m_NodeState = NodeState.Success; return m_NodeState; default: break; } return m_NodeState; } public override void OnCreateConnection(NodePort from, NodePort to) { base.OnCreateConnection(from, to); } public override void OnRemoveConnection(NodePort port) { base.OnRemoveConnection(port); } public override void OnStart() { } public override void ReorderChild() { ((BTNode)GetOutputPort("firstNode").node).indexInSequence = 0; } }