public void SetupParallel() { var root = new Parallel(); var conditionalA = new TestYieldConditionNode { Conditional = s => s.A }; var conditionalB = new TestNestedConditionNode { Conditional = s => s.B }; var conditionalC = new TestConditionNode { Conditional = s => s.C }; var conditionalD = new TestRunningConditionNode { Conditional = s => s.D }; root.Children = new List <Node> { conditionalA, conditionalB, conditionalC, conditionalD }; _treeB = new BehaviourTree(root); _stateB = new State { A = true, B = false, C = true, D = false }; while (_treeB.TickCount == 0) { _treeB.Update(_stateB); } }
public void NestedCoroutinesNodeTest() { var root = new Sequence(); var stages = new Queue <string>(); var manager = new BehaviourTree(root); var conditionalA = new TestConditionNode { Print = "A0", Stages = stages, Conditional = s => s.A }; var conditionalB = new TestNestedConditionNode { Stages = stages, Conditional = s => s.B }; var conditionalC = new TestConditionNode { Print = "C0", Stages = stages, Conditional = s => s.C }; root.Children = new List <Node> { conditionalA, conditionalB, conditionalC }; foreach (var n in root.DepthFirstIterate()) { n.Initialize(); } Assert.AreEqual(0UL, manager.TickCount); // true true true stages.Enqueue("TICK"); manager.Update(new State { A = true, B = true, C = true }); Assert.AreEqual(Result.Unknown, manager.Result); Assert.AreEqual(0UL, manager.TickCount); var sequence = new List <string> { "TICK", "A0", "A", "B", "C" }; Assert.IsTrue(stages.SequenceEqual(sequence)); stages.Enqueue("TICK"); manager.Update(new State { A = true, B = true, C = true }); Assert.AreEqual(Result.Success, manager.Result); Assert.AreEqual(1UL, manager.TickCount); sequence.AddRange(new[] { "TICK", "D", "C0" }); Assert.IsTrue(stages.SequenceEqual(sequence)); }