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

41 lines
1.0 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace MBT
{
[AddComponentMenu("")]
[MBTNode(name = "Decorators/Repeater")]
public class Repeater : Decorator
{
public int loops = 1;
public bool infinite = false;
public bool breakOnFailure = false;
private int count;
public override void OnEnter()
{
count = loops;
}
public override NodeResult Execute()
{
if (!TryGetChild(out Node node))
{
return NodeResult.failure;
}
if (breakOnFailure && node.status == Status.Failure)
{
return NodeResult.failure;
}
if (infinite || count > 0) {
// Repeat children
behaviourTree.ResetNodesTo(this);
count -= 1;
return node.runningNodeResult;
}
return NodeResult.success;
}
}
}