Firstborn/Assets/RPG Creation Kit/Scripts/BehaviourTrees/Nodes/Execution/WaitNode.cs

85 lines
2.1 KiB
C#
Raw Permalink Normal View History

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XNode;
using RPGCreationKit.BehaviourTree;
namespace RPGCreationKit.BehaviourTree
{
[CreateNodeMenu("RPGCK_BehaviourTree/Wait", order = 1)]
[System.Serializable]
public class WaitNode : BTNode
{
public string did = null;
public float startTime = 0.0f;
public float waitTime = 0.0f;
public bool randomizeWaitTime = false;
public float minWait = 0.0f;
public float maxWait = 1.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();
if(did == "debug")
{
//Debug.Log(this.GetInstanceID() + " -----" + (startTime + waitTime).ToString() + " | " + Time.time);
}
if (startTime + waitTime < Time.time)
{
m_NodeState = NodeState.Success;
STARTED = false;
hasEvaluated = true;
return m_NodeState;
}
m_NodeState = NodeState.Running;
return m_NodeState;
}
public override void ReEvaluate()
{
if (m_NodeState != NodeState.Running)
base.ReEvaluate();
}
public override void OnRemoveConnection(NodePort port)
{
base.OnRemoveConnection(port);
indexInSequence = -1;
}
public override void OnStart()
{
// Remember the start time.
startTime = Time.time;
if (randomizeWaitTime)
waitTime = Random.Range(minWait, maxWait);
STARTED = true;
}
}
}