2024-06-23 19:12:22 +01:00

51 lines
1.4 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace MBT
{
[AddComponentMenu("")]
[MBTNode(name = "Tasks/Wait")]
public class Wait : Leaf
{
[Tooltip("Wait time in seconds")]
public FloatReference time = new FloatReference(1f);
public float randomDeviation = 0f;
public bool continueOnRestart = false;
private float timer;
public override void OnEnter()
{
if (!continueOnRestart) {
timer = (randomDeviation == 0f)? 0f : Random.Range(-randomDeviation, randomDeviation);
}
}
public override NodeResult Execute()
{
if (timer >= time.Value) {
// Reset timer in case continueOnRestart option is active
if (continueOnRestart)
{
timer = (randomDeviation == 0f)? 0f : Random.Range(-randomDeviation, randomDeviation);
}
return NodeResult.success;
}
timer += this.DeltaTime;
return NodeResult.running;
}
void OnValidate()
{
if (time.isConstant)
{
randomDeviation = Mathf.Clamp(randomDeviation, 0f, time.GetConstant());
}
else
{
randomDeviation = Mathf.Clamp(randomDeviation, 0f, 600f);
}
}
}
}