コード例 #1
0
        /// <summary>
        /// Splice a sub tree into the parent tree.
        /// </summary>
        public BehaviorTreeBuilder Splice(IBehaviorTreeNode subTree)
        {
            Debug.Assert(subTree != null, "Subtree is null");
            Debug.Assert(subTree is RootNode, "Subtree has to start with a root node");

            parentNodeStack.Peek().AddChild(((RootNode)subTree).ExchangeRootNode(rootNode));

            return(this);
        }
コード例 #2
0
 public override void AddChild(IBehaviorTreeNode child)
 {
     if (AddIfChild)
     {
         ifTrue = child;
     }
     else
     {
         ifFalse = child;
     }
 }
コード例 #3
0
ファイル: nodes.cs プロジェクト: bitdotgames/bhl
 public static void Stop(this IBehaviorTreeNode node)
 {
     if (node.last_status == BHS.RUNNING)
     {
         node.Deinit();
     }
     if (node.last_status != BHS.NONE)
     {
         node.Defer();
     }
     node.last_status = BHS.NONE;
 }
コード例 #4
0
ファイル: nodes.cs プロジェクト: bitdotgames/bhl
 public void SetSlave(IBehaviorTreeNode node)
 {
     if (children.Count == 0)
     {
         this.AddChild(node);
     }
     //NOTE: should we stop the current one?
     else
     {
         children[0] = node;
     }
 }
コード例 #5
0
ファイル: nodes.cs プロジェクト: bitdotgames/bhl
        public override BehaviorTreeInternalNode AddChild(IBehaviorTreeNode new_child)
        {
            //force DEFER to proceed to the next node
            var d = new_child as DeferNode;

            if (d != null)
            {
                d.result = BHS.FAILURE;
            }

            children.Add(new_child);
            return(this);
        }
コード例 #6
0
ファイル: nodes.cs プロジェクト: bitdotgames/bhl
 public static BHS Run(this IBehaviorTreeNode node)
 {
     if (node.last_status != BHS.RUNNING)
     {
         node.Init();
     }
     node.last_status = node.Execute();
     if (node.last_status != BHS.RUNNING)
     {
         node.Deinit();
     }
     return(node.last_status);
 }
コード例 #7
0
ファイル: nodes.cs プロジェクト: bitdotgames/bhl
        public override BehaviorTreeInternalNode AddChild(IBehaviorTreeNode new_child)
        {
            //force DEFER to keep running
            var d = new_child as DeferNode;

            if (d != null)
            {
                d.result = BHS.RUNNING;
            }

            children.Add(new_child);
            return(this);
        }
コード例 #8
0
    void Start()
    {
        BehaviorTreeBuilder builder = new BehaviorTreeBuilder();

        builder.Sequence("sequence1");
        builder.Action("action1", Action01);
        builder.Action("action2", Action02);
        builder.Sequence("sequence02");
        builder.Action("action03", Action03);
        builder.Action("action04", Action04);
        builder.End();
        builder.Action("Action05", Action05);
        builder.Action("Action06", Action06);
        builder.End();
        tree = builder.Build();
    }
コード例 #9
0
        public static IBehaviorTreeNode WithFightingAI(IBehaviorTreeNode tree, MovingEntity entity)
        {
            BehaviorTreeBuilder builder = new BehaviorTreeBuilder(((RootNode)tree).TickFrequency);

            return(builder
                   .Selector()
                   .LongRunning(() => new FightTask(entity))
                   .Sequence()
                   .SingleStepResultCached((GameTime gameTime) =>
            {
                entity.StopWalking();

                return BehaviourTreeStatus.Success;
            })
                   .Splice(tree)
                   .End()
                   .End()
                   .Build());
        }
コード例 #10
0
 public BehaviorTreeSelector Add(IBehaviorTreeNode node)
 {
     NodeList.Add(node);
     return(this);
 }
コード例 #11
0
        public void SetIfFalse(IBehaviorTreeNode child)
        {
            Debug.Assert(ifFalse == null, "ifFalse was already set!");

            ifFalse = child;
        }
コード例 #12
0
 public IBehaviorTreeNode AddChild(IBehaviorTreeNode _node)
 {
     children.Add(_node);
     return(this);
 }
コード例 #13
0
 public void AddChild(IBehaviorTreeNode child)
 {
     m_childrens.Add(child);
 }
コード例 #14
0
 public void Proxy(IBehaviorTreeNode _child)
 {
     child = _child;
 }
コード例 #15
0
 public void AddChild(IBehaviorTreeNode _node)
 {
     children.Add(_node);
 }
コード例 #16
0
 public abstract void AddChild(IBehaviorTreeNode child);
コード例 #17
0
 //Finished building a composite node
 //Removes composite node from the top of parentstacklist
 public BehaviorTreeBuilder End()
 {
     m_currentParentNode = m_parentNodeStack.Pop();
     return(this);
 }
コード例 #18
0
ファイル: nodes.cs プロジェクト: bitdotgames/bhl
 public virtual BehaviorTreeInternalNode AddChild(IBehaviorTreeNode new_child)
 {
     children.Add(new_child);
     return(this);
 }
コード例 #19
0
 public void AddChild(IBehaviorTreeNode child)
 {
     childNode = child;
 }
コード例 #20
0
 public override void AddChild(IBehaviorTreeNode child)
 {
     children.Add(child);
 }
コード例 #21
0
 public void AddChild(IBehaviorTreeNode root)
 {
     this.root = root;
 }
コード例 #22
0
ファイル: BehaviorTree.cs プロジェクト: lbddk/ahzs-client
 public void AddChild(IBehaviorTreeNode root)
 {
     this.root = root;
 }
コード例 #23
0
 public void DelChild(IBehaviorTreeNode _node)
 {
     children.Remove(_node);
 }
コード例 #24
0
ファイル: BehaviorTree.cs プロジェクト: lbddk/ahzs-client
 public void DelChild(IBehaviorTreeNode _node)
 {
     children.Remove(_node);
 }
コード例 #25
0
 public BehaviorTreeSequence Add(IBehaviorTreeNode node)
 {
     NodeList.Add(node);
     return(this);
 }
コード例 #26
0
 /// <summary>
 /// Ends a sequence of children.
 /// </summary>
 public BehaviorTreeBuilder End()
 {
     curNode = parentNodeStack.Pop();
     return(this);
 }
コード例 #27
0
ファイル: BehaviorTree.cs プロジェクト: lbddk/ahzs-client
 public void AddChild(IBehaviorTreeNode _node)
 {
     children.Add(_node);
 }
コード例 #28
0
 public IBehaviorTreeNode AddChild(IBehaviorTreeNode _child)
 {
     child = _child;
     return(this);
 }
コード例 #29
0
ファイル: BehaviorTree.cs プロジェクト: lbddk/ahzs-client
 public void Proxy(IBehaviorTreeNode _child)
 {
     child = _child;
 }
コード例 #30
0
 public IBehaviorTreeNode AddChild(IBehaviorTreeNode root)
 {
     this.root = root;
     return(this);
 }