public bool AddChildToParent(string parent, int index)
        {
            var success = new SuccessActionNode("Success");
            var bt      = new SimpleBehaviourTree();

            return(bt.AddChildToParent(success, parent, index));
        }
        public bool Exists(string nodeName)
        {
            var bt = new SimpleBehaviourTree();

            bt.AddChildToParent(new SuccessActionNode("Existing Node"), "Root Node", 0);
            return(bt.Exists(nodeName));
        }
        public void DFSTraverseWithNoChildren()
        {
            var behaviourTree = new SimpleBehaviourTree
            {
                TreeTraversalStrategy = new DFSTraversal <HashSet <BTNode> >()
            };
            var nodes = behaviourTree.Traverse();

            Assert.IsTrue(nodes != null);
            Assert.IsTrue(nodes.ToList().Count == 1);
            Assert.IsTrue(nodes.ToList().Single().Name == "Root Node");
        }
        public void RemoveChildFromParent(string node)
        {
            var bt         = new SimpleBehaviourTree();
            var parentNode = new NodeWithChildren("Node with children");
            var child1     = new SuccessActionNode("Success 1");
            var child2     = new FailActionNode("Fail 1");
            var child3     = new RunningActionNode("Running 1");

            bt.AddChildToParent(parentNode, "Root Node", 0);
            bt.AddChildToParent(child1, parentNode.Name, 0);
            bt.AddChildToParent(child2, parentNode.Name, 1);
            bt.AddChildToParent(child3, parentNode.Name, 2);

            var deletedNode = bt.RemoveChildFromParent(node, parentNode.Name);

            Assert.IsNotNull(deletedNode);
        }
示例#5
0
 private void SetupBehaviourTree()
 {
     behaviourTree = new SimpleBehaviourTree.Builder()
                     .Build(
         new BTSelector.Builder()
         .SetEvaluateFunc(TwoTeetsReceived)
         .Build(
             new BTSelector.Builder()
             .SetEvaluateFunc(HasEnergy)
             .Build(
                 new BTSelector.Builder()
                 .SetEvaluateFunc(HasTreeToInfest)
                 .Build(
                     new BTSelector.Builder()
                     .SetEvaluateFunc(HasLessPointsThanPlayer)
                     .Build(
                         new BTSelector.Builder()
                         .SetEvaluateFunc(HasTreeToKillWithoutPlayerIntervention)
                         .Build(
                             infestTreeThatPlayerCantReachBehaviour,
                             infestTreeWithBestDistanceToHealthBehaviour
                             ),
                         new BTSelector.Builder()
                         .SetEvaluateFunc(RandomTimeSinceLastTreeInfestElapsed)
                         .Build(
                             infestRandomTreeBehaviour,
                             wanderInsideBehaviour
                             )
                         ),
                     wanderInsideBehaviour
                     )
                 ,
                 new BTSelector.Builder()
                 .SetEvaluateFunc(HasLessPointsThanPlayer)
                 .Build(
                     wanderInsideBehaviour,
                     wanderOutsideBehaviour
                     )
                 ),
             wanderOutsideBehaviour
             )
         );
 }
        public void TreeNodes()
        {
            var behaviourTree = new SimpleBehaviourTree();

            behaviourTree.AddChildToParent(new SuccessActionNode("Success 1"), behaviourTree.RootNode.Name, 0);
            behaviourTree.AddChildToParent(new FailActionNode("Fail 1"), "Root Node", 1);
            behaviourTree.AddChildToParent(new RunningActionNode("Running 1"), "Root Node", 2);

            var result   = behaviourTree.TreeNodes;
            var expected = new List <string>
            {
                behaviourTree.RootNode.Name,
                "Success 1",
                "Fail 1",
                "Running 1"
            };

            Assert.IsTrue(result.SequenceEqual(expected));
        }
        public void BFSTraversalHeightOne()
        {
            var bt = new SimpleBehaviourTree();

            var child1 = new SuccessActionNode("Success 1");
            var child2 = new FailActionNode("Fail 1");
            var child3 = new RunningActionNode("Running 1");

            var expected = new List <string>
            {
                bt.RootNode.Name,
                "Success 1",
                "Fail 1",
                "Running 1"
            };

            Assert.IsTrue(bt.AddChildToParent(child1, bt.RootNode.Name, 0) &&
                          bt.AddChildToParent(child2, bt.RootNode.Name, 1) &&
                          bt.AddChildToParent(child3, bt.RootNode.Name, 2));
            var traversalResult = bt.Traverse();
            var result          = traversalResult.Select(node => node.Name).ToList();

            Assert.IsTrue(expected.SequenceEqual(result));
        }