예제 #1
0
        public void RandomTest()
        {
            var blackboard = new TestBlackboard();
            var node       = new Random <TestBlackboard>();
            var tree       = BehaviorTreeBuilder <TestBlackboard> .Begin()
                             .Sequence()
                             .Decorator(node).Leaf(new TrackingLeaf())
                             .Build(blackboard);

            ushort[] result = new ushort[2];
            for (var i = 0; i < 100; i++)
            {
                this.UpdateAndStep(tree, 0.1f);
                if (node.Status == BTTaskStatus.Succeeded)
                {
                    result[1]++;
                }
                else
                {
                    result[0]++;
                }
            }

            // We should get a decently even spread but we can't rely on it, 50% sway should be plenty enough to have a stable result
            Assert.Greater(result[0], 25);
            Assert.Greater(result[1], 25);

            Assert.AreEqual(100, blackboard.GetTracking(TestBlackboard.TrackingExecution));
        }
예제 #2
0
        public void InvertTest()
        {
            var blackboard = new TestBlackboard();
            var node       = new Invert <TestBlackboard>();
            var tree       = BehaviorTreeBuilder <TestBlackboard> .Begin()
                             .Sequence()
                             .Decorator(node).Leaf(new TrackingLeaf())
                             .Build(blackboard);

            this.UpdateAndStep(tree, 0.1f);

            Assert.AreEqual(BTTaskStatus.Failed, node.Status);
            Assert.AreEqual(1, blackboard.GetTracking(TestBlackboard.TrackingExecution));
        }
예제 #3
0
        public void IntervalTest()
        {
            var blackboard = new TestBlackboard();
            var tree       = BehaviorTreeBuilder <TestBlackboard> .Begin()
                             .Sequence()
                             .Interval().Leaf(new TrackingLeaf())
                             .Build(blackboard);

            for (var n = 0; n < 10; n++)
            {
                for (var i = 0; i < 9; i++)
                {
                    this.UpdateAndStep(tree, 0.1f);
                }

                Assert.AreEqual(n, blackboard.GetTracking(TestBlackboard.TrackingExecution));

                this.UpdateAndStep(tree, 0.1f);

                Assert.AreEqual(n + 1, blackboard.GetTracking(TestBlackboard.TrackingExecution));
            }
        }
 public static BehaviourTreeStatus IncrementCounter1(TestBlackboard blackboard)
 {
     blackboard.Counter1++;
     return(BehaviourTreeStatus.Success);
 }
 public static BehaviourTreeStatus ReachLimitAction(TestBlackboard blackboard)
 {
     IncrementCounter1(blackboard);
     return(blackboard.Counter1 == 3 ? BehaviourTreeStatus.Success : BehaviourTreeStatus.Failure);
 }
 public static bool True(TestBlackboard blackboard)
 {
     return(true);
 }
 public static bool False(TestBlackboard blackboard)
 {
     return(false);
 }