using System.Collections; using System.Collections.Generic; using UnityEngine; using XNode; using RPGCreationKit.BehaviourTree; namespace RPGCreationKit.BehaviourTree { [CreateNodeMenu("RPGCK_BehaviourTree/ActionNode", order = 1)] [System.Serializable] public class ActionNode : BTNode { public string debugs = ""; public bool executionGoesWell = false; public float startTime = 0; public float timer = 0f; // 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() { if (m_NodeState == NodeState.Success || m_NodeState == NodeState.Failure) if (hasEvaluated == true) return m_NodeState; if (!STARTED) OnStart(); startTime += 1 * Time.deltaTime; if (startTime >= timer) { if(!string.IsNullOrEmpty(debugs)) Debug.Log(debugs); m_NodeState = (executionGoesWell) ? NodeState.Success : NodeState.Failure; return m_NodeState; } hasEvaluated = true; m_NodeState = NodeState.Running; return m_NodeState; } public override void ReEvaluate() { if (m_NodeState != NodeState.Running) { base.ReEvaluate(); OnStart(); } } public override void OnRemoveConnection(NodePort port) { base.OnRemoveConnection(port); indexInSequence = -1; } public override void OnStart() { STARTED = true; startTime = 0; } } }