Esempio n. 1
0
    private void CreateBehaviourTree()
    {
        //LeafNode lookRecipe = behaviourTree.CreateLeafNode("Look recipe", CreateRecipe, IsRecipeCreated);
        LeafNode     bake      = behaviourTree.CreateLeafNode("Bake pizza", BakePizza, IsPizzaBaked);
        SequenceNode makePizza = behaviourTree.CreateSequenceNode("Make a pizza", false);

        makePizza.AddChild(lookRecipe);
        makePizza.AddChild(subFSM);
        makePizza.AddChild(bake);
        LoopDecoratorNode loopNode = behaviourTree.CreateLoopNode("Loop root", makePizza);

        behaviourTree.SetRootNode(loopNode);
    }
Esempio n. 2
0
    /// <summary>
    /// Creates a new infinite <see cref="LoopDecoratorNode"/> in the behaviour tree
    /// </summary>
    /// <param name="name">The name of the node</param>
    /// <param name="child">The child of the node</param>
    /// <returns></returns>
    public LoopDecoratorNode CreateLoopNode(string name, TreeNode child)
    {
        if (!states.ContainsKey(name))
        {
            LoopDecoratorNode loopNode = new LoopDecoratorNode(name, child, this);
            BTnodes.Add(loopNode);
            states.Add(name, loopNode.StateNode);

            return(loopNode);
        }
        else
        {
            throw new DuplicateWaitObjectException(name, "The node already exists in the behaviour tree");
        }
    }
Esempio n. 3
0
    private void CreateBehaviourTree()
    {
        behaviourTree = new BehaviourTreeEngine(false);

        LeafNode           throwRod       = behaviourTree.CreateLeafNode("Throw rod", ThrowRod, RodThrown);
        LeafNode           catchSomething = behaviourTree.CreateLeafNode("Catch something", Catch, SomethingCatched);
        LeafNode           returnToWater  = behaviourTree.CreateLeafNode("Return to water", () => Invoke("ReturnToWater", 2), ReturnedToWater);
        LeafNode           storeInBasket  = behaviourTree.CreateLeafNode("Store in the basket", () => Invoke("StoreBasket", 2), StoredInBasket);
        TimerDecoratorNode timerNode      = behaviourTree.CreateTimerNode("Timer node", catchSomething, 3);
        SelectorNode       selectorNode   = behaviourTree.CreateSelectorNode("Selector node");

        selectorNode.AddChild(returnToWater);
        selectorNode.AddChild(storeInBasket);
        SequenceNode sequenceNode = behaviourTree.CreateSequenceNode("Sequence node", false);

        sequenceNode.AddChild(throwRod);
        sequenceNode.AddChild(timerNode);
        sequenceNode.AddChild(selectorNode);
        LoopDecoratorNode rootNode = behaviourTree.CreateLoopNode("Root node", sequenceNode);

        behaviourTree.SetRootNode(rootNode);
    }
Esempio n. 4
0
    private void CreateBehaviourTree()
    {
        behaviourTree = new BehaviourTreeEngine(false);

        LeafNode     toPoint1      = behaviourTree.CreateLeafNode("To point 1", () => ToPoint(routePoints[0]), () => ArrivedToPoint(routePoints[0]));
        LeafNode     toPoint2      = behaviourTree.CreateLeafNode("To point 2", () => ToPoint(routePoints[1]), () => ArrivedToPoint(routePoints[1]));
        LeafNode     toPoint3      = behaviourTree.CreateLeafNode("To point 3", () => ToPoint(routePoints[2]), () => ArrivedToPoint(routePoints[2]));
        LeafNode     toPoint4      = behaviourTree.CreateLeafNode("To point 4", () => ToPoint(routePoints[3]), () => ArrivedToPoint(routePoints[3]));
        LeafNode     toPoint5      = behaviourTree.CreateLeafNode("To point 5", () => ToPoint(routePoints[4]), () => ArrivedToPoint(routePoints[4]));
        LeafNode     toPoint6      = behaviourTree.CreateLeafNode("To point 6", () => ToPoint(routePoints[5]), () => ArrivedToPoint(routePoints[5]));
        SequenceNode sequenceRoute = behaviourTree.CreateSequenceNode("Route", false);

        sequenceRoute.AddChild(toPoint1);
        sequenceRoute.AddChild(toPoint2);
        sequenceRoute.AddChild(toPoint3);
        sequenceRoute.AddChild(toPoint4);
        sequenceRoute.AddChild(toPoint5);
        sequenceRoute.AddChild(toPoint6);
        LoopDecoratorNode loopNode = behaviourTree.CreateLoopNode("Loop root", sequenceRoute);

        behaviourTree.SetRootNode(loopNode);
    }