Skip to content

Commit a1b909f

Browse files
committed
Added builder return success, return failure, and inverter
1 parent 995e7f0 commit a1b909f

File tree

2 files changed

+69
-1
lines changed

2 files changed

+69
-1
lines changed

Assets/FluidBehaviorTree/Scripts/BehaviorTree/BehaviorTreeBuilder.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,18 @@ public BehaviorTreeBuilder Decorator (string name, Func<ITask, TaskStatus> logic
4747
public BehaviorTreeBuilder Decorator (Func<ITask, TaskStatus> logic) {
4848
return Decorator("decorator", logic);
4949
}
50+
51+
public BehaviorTreeBuilder Inverter (string name = "inverter") {
52+
return ParentTask<Inverter>(name);
53+
}
54+
55+
public BehaviorTreeBuilder ReturnSuccess (string name = "return success") {
56+
return ParentTask<ReturnSuccess>(name);
57+
}
58+
59+
public BehaviorTreeBuilder ReturnFailure (string name = "return failure") {
60+
return ParentTask<ReturnFailure>(name);
61+
}
5062

5163
public BehaviorTreeBuilder Sequence (string name = "sequence") {
5264
return ParentTask<Sequence>(name);

Assets/FluidBehaviorTree/Scripts/BehaviorTree/Editor/BehaviorTreeBuilderTest.cs

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
using Adnc.FluidBT.Tasks;
44
using Adnc.FluidBT.Tasks.Actions;
55
using NUnit.Framework;
6-
using UnityEngine;
76

87
namespace Adnc.FluidBT.Trees.Testing {
98
public class BehaviorTreeBuilderTest {
@@ -313,5 +312,62 @@ public void It_should_move_to_the_next_node_on_End () {
313312
Assert.AreEqual(3, _invokeCount);
314313
}
315314
}
315+
316+
public class InverterMethod : BehaviorTreeBuilderTest {
317+
[Test]
318+
public void It_should_create_an_inverter () {
319+
var tree = _builder
320+
.Inverter("inverter")
321+
.Do("action", () => {
322+
_invokeCount++;
323+
return TaskStatus.Success;
324+
})
325+
.Build();
326+
327+
var decorator = tree.Root.Children[0] as Inverter;
328+
329+
Assert.IsNotNull(decorator);
330+
Assert.AreEqual(TaskStatus.Failure, tree.Tick());
331+
Assert.AreEqual(1, _invokeCount);
332+
}
333+
}
334+
335+
public class ReturnSuccessMethod : BehaviorTreeBuilderTest {
336+
[Test]
337+
public void It_should_create_a_ReturnSuccess () {
338+
var tree = _builder
339+
.ReturnSuccess("return success")
340+
.Do("action", () => {
341+
_invokeCount++;
342+
return TaskStatus.Failure;
343+
})
344+
.Build();
345+
346+
var decorator = tree.Root.Children[0] as ReturnSuccess;
347+
348+
Assert.IsNotNull(decorator);
349+
Assert.AreEqual(TaskStatus.Success, tree.Tick());
350+
Assert.AreEqual(1, _invokeCount);
351+
}
352+
}
353+
354+
public class ReturnFailureMethod : BehaviorTreeBuilderTest {
355+
[Test]
356+
public void It_should_create_a_ReturnFailure () {
357+
var tree = _builder
358+
.ReturnFailure("return failure")
359+
.Do("action", () => {
360+
_invokeCount++;
361+
return TaskStatus.Success;
362+
})
363+
.Build();
364+
365+
var decorator = tree.Root.Children[0] as ReturnFailure;
366+
367+
Assert.IsNotNull(decorator);
368+
Assert.AreEqual(TaskStatus.Failure, tree.Tick());
369+
Assert.AreEqual(1, _invokeCount);
370+
}
371+
}
316372
}
317373
}

0 commit comments

Comments
 (0)