Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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));
        }