41 lines
1.0 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|