コード例 #1
0
        void UpdateBehaviorTree()
        {
            if (rootNode == null)
            {
                rootNode = GetRootNode <BehaviorTreeNode>();
            }

            if (navigator == null)
            {
                if (string.IsNullOrEmpty(navigatorPath))
                {
                    navigator = GetRootNode <INavAgent>();
                }
                else
                {
                    navigator = GetNode(navigatorPath) as INavAgent;
                }
            }

            if (rootNode != null)
            {
                rootNode.AssignChildNodes();
                AssignBehaviorTreeOnChildren(rootNode);
            }
            else
            {
                GD.Print("The Behavior Tree '" + GetName() + "' needs a root BehaviorTreeNode!");
            }
        }
コード例 #2
0
        public override void AssignChildNodes()
        {
            List <BehaviorTreeNode> nodes = GetChildNodesByType <BehaviorTreeNode>();
            int nodeCount = nodes.Count;

            if (nodeCount == 0)
            {
                Godot.GD.Print("Warning: a Decorator node needs one (and only one) Leaf node. '" + GetName() + "' will automatically return SUCCESS");
                leafNode = null;
            }
            else
            {
                leafNode = nodes[0];

                if (nodeCount > 1)
                {
                    Godot.GD.Print("Warning: a Decorator node only accepts one sub node, only the first one will be used: '" + GetName() + "' will only use '" + leafNode.GetName() + "'");
                }
            }

            for (int i = 0; i < nodeCount; i++)
            {
                nodes[i].AssignChildNodes();
            }

            base.AssignChildNodes();
        }
コード例 #3
0
 protected void SetParentNode(BehaviorTreeNode rParentNode)
 {
     if (rParentNode == null)
     {
         return;
     }
     mParentNode = rParentNode;
 }
コード例 #4
0
 public void SetActiveNode(BehaviorTreeNode rNode)
 {
     mActiveNodeLast = mActiveNodeCur;
     mActiveNodeCur  = rNode;
     if (mParentNode != null)
     {
         mParentNode.SetActiveNode(rNode);
     }
 }
コード例 #5
0
        public ParallelNode(BehaviorTreeNode rParentNode, BehaviorTreeCondition rCondition = null)
            : base(rParentNode, rCondition)
        {
            mFinishCondition = ParallelFinishCondition.OR;
            mChildrenStatus  = new NodeRunningStatus[BehaviorTreeNode._maxChildNodeCount];

            for (int i = 0; i < BehaviorTreeNode._maxChildNodeCount; i++)
            {
                mChildrenStatus[i] = NodeRunningStatus.Executing;
            }
        }
コード例 #6
0
ファイル: ParallelNode.cs プロジェクト: meta-42/uEasyKit
        public ParallelNode(BehaviorTreeNode rParentNode, BehaviorTreeCondition rCondition = null)
            : base(rParentNode, rCondition)
        {
            mFinishCondition = ParallelFinishCondition.OR;
            mChildrenStatus = new NodeRunningStatus[BehaviorTreeNode._maxChildNodeCount];

            for (int i = 0; i < BehaviorTreeNode._maxChildNodeCount; i++ )
            {
                mChildrenStatus[i] = NodeRunningStatus.Executing;
            }
        }
コード例 #7
0
 public BehaviorTreeNode AddChildNode(BehaviorTreeNode rNode)
 {
     if (mChildrenCount >= _maxChildNodeCount)
     {
         Debug.Log("children count up to max value:> " + NodeName);
         return(this);
     }
     mChildren[mChildrenCount] = rNode;
     mChildrenCount++;
     return(this);
 }
コード例 #8
0
        void AssignBehaviorTreeOnChildren(BehaviorTreeNode node)
        {
            List <BehaviorTreeNode> nodes = node.GetChildNodesByType <BehaviorTreeNode>();

            node.SetBehaviorTree(this);

            for (int i = 0; i < nodes.Count; i++)
            {
                nodes[i].SetBehaviorTree(this);
                AssignBehaviorTreeOnChildren(nodes[i]);
            }
        }
コード例 #9
0
        public BehaviorTreeNode(BehaviorTreeNode rParentNode, BehaviorTreeCondition rCondition = null)
        {
            NodeName        = "UNNAMED";
            mChildrenCount  = 0;
            mActiveNodeCur  = null;
            mActiveNodeLast = null;
            mCondition      = null;
            mChildren       = new BehaviorTreeNode[_maxChildNodeCount];

            for (int i = 0; i < _maxChildNodeCount; i++)
            {
                mChildren[i] = null;
            }

            SetParentNode(rParentNode);
            SetExternalCondition(rCondition);
        }
コード例 #10
0
ファイル: BehaviorTreeNode.cs プロジェクト: meta-42/uEasyKit
        public BehaviorTreeNode(BehaviorTreeNode rParentNode, BehaviorTreeCondition rCondition = null)
        {
            NodeName = "UNNAMED";
            mChildrenCount = 0;
            mActiveNodeCur = null;
            mActiveNodeLast = null;
            mCondition = null;
            mChildren = new BehaviorTreeNode[_maxChildNodeCount];

            for( int i=0; i < _maxChildNodeCount; i++ )
            {
                mChildren[i] = null;
            }

            SetParentNode(rParentNode);
            SetExternalCondition(rCondition);
        }
コード例 #11
0
ファイル: BehaviorTreeNode.cs プロジェクト: meta-42/uEasyKit
 public void SetActiveNode(BehaviorTreeNode rNode)
 {
     mActiveNodeLast = mActiveNodeCur;
     mActiveNodeCur = rNode;
     if (mParentNode != null) mParentNode.SetActiveNode(rNode);
 }
コード例 #12
0
 public PriortySelectorNode(BehaviorTreeNode rParentNode, BehaviorTreeCondition rCondition = null)
     : base(rParentNode, rCondition)
 {
     mSelectIndexCur = mSelectIndexLast = BehaviorTreeNode._invalidChildNodeIndex;
 }
コード例 #13
0
ファイル: ActionNode.cs プロジェクト: meta-42/uEasyKit
 public ActionNode(BehaviorTreeNode rParentNode, BehaviorTreeCondition rCondtion = null)
     : base(rParentNode, rCondtion)
 {
     mActionStatus = NodeActionStaus.Ready;
     mNeedExit = false;
 }
コード例 #14
0
ファイル: NodeFactory.cs プロジェクト: meta-42/uEasyKit
 public BehaviorTreeNode CreateSequenceNode(BehaviorTreeNode rParentNode, string rNodeName)
 {
     return new BehaviorTreeNode(rParentNode, new ConditionTrue());
 }
コード例 #15
0
ファイル: LoopNode.cs プロジェクト: zsy3105/UnityFramework
 public LoopNode(BehaviorTreeNode rParentNode, BehaviorTreeCondition rCondition = null, int rLoopCount = _infiniteLoop)
     : base(rParentNode, rCondition)
 {
     mLoopCount = rLoopCount;
     mCountCur  = 0;
 }
コード例 #16
0
 public BehaviorTreeNode CreateNonePrioritySelectorNode(BehaviorTreeNode rParentNode, string rNodeName)
 {
     return(new BehaviorTreeNode(rParentNode, new ConditionTrue()));
 }
コード例 #17
0
ファイル: BehaviorTreeNode.cs プロジェクト: meta-42/uEasyKit
 public BehaviorTreeNode AddChildNode(BehaviorTreeNode rNode)
 {
     if(mChildrenCount >= _maxChildNodeCount)
     {
         Debug.Log("children count up to max value:> " + NodeName);
         return this;
     }
     mChildren[mChildrenCount] = rNode;
     mChildrenCount++;
     return this;
 }
コード例 #18
0
ファイル: NodeFactory.cs プロジェクト: meta-42/uEasyKit
 BehaviorTreeNode CreateNodeCommon(BehaviorTreeNode rSelfNode, BehaviorTreeNode rParentNode, string rNodeName)
 {
     return new BehaviorTreeNode(rParentNode, new ConditionTrue());
 }
コード例 #19
0
ファイル: NodeFactory.cs プロジェクト: meta-42/uEasyKit
 public BehaviorTreeNode CreatePrioritySelectorNode(BehaviorTreeNode rParentNode, string rNodeName)
 {
     return new BehaviorTreeNode(rParentNode, new ConditionTrue());
 }
コード例 #20
0
 public BehaviorTreeNode CreateActionNode(BehaviorTreeNode rParentNode, string rNodeName)
 {
     return(new BehaviorTreeNode(rParentNode, new ConditionTrue()));
 }
コード例 #21
0
ファイル: SequenceNode.cs プロジェクト: meta-42/uEasyKit
 public SequenceNode(BehaviorTreeNode rParentNode, BehaviorTreeCondition rCondition = null)
     : base(rParentNode, rCondition)
 {
     mNodeIndexCur = BehaviorTreeNode._invalidChildNodeIndex;
 }
コード例 #22
0
 public SequenceNode(BehaviorTreeNode rParentNode, BehaviorTreeCondition rCondition = null)
     : base(rParentNode, rCondition)
 {
     mNodeIndexCur = BehaviorTreeNode._invalidChildNodeIndex;
 }
コード例 #23
0
ファイル: ActionNode.cs プロジェクト: zsy3105/UnityFramework
 public ActionNode(BehaviorTreeNode rParentNode, BehaviorTreeCondition rCondtion = null)
     : base(rParentNode, rCondtion)
 {
     mActionStatus = NodeActionStaus.Ready;
     mNeedExit     = false;
 }
コード例 #24
0
ファイル: LoopNode.cs プロジェクト: meta-42/uEasyKit
 public LoopNode(BehaviorTreeNode rParentNode, BehaviorTreeCondition rCondition = null, int rLoopCount = _infiniteLoop)
     : base(rParentNode, rCondition)
 {
     mLoopCount = rLoopCount;
     mCountCur = 0;
 }
コード例 #25
0
ファイル: BehaviorTreeNode.cs プロジェクト: meta-42/uEasyKit
 protected void SetParentNode(BehaviorTreeNode rParentNode)
 {
     if (rParentNode == null) return;
     mParentNode = rParentNode;
 }
コード例 #26
0
 public NonePrioritySelectorNode(BehaviorTreeNode rParentNode, BehaviorTreeCondition rCondition = null)
     : base(rParentNode, rCondition)
 {
 }
コード例 #27
0
ファイル: NodeFactory.cs プロジェクト: meta-42/uEasyKit
 public BehaviorTreeNode oCreateLoopNode(BehaviorTreeNode rParentNode, string rNodeName, int rLoopCount)
 {
     return new BehaviorTreeNode(rParentNode, new ConditionTrue());
 }
コード例 #28
0
 public BehaviorTreeNode CreateParalleNode(BehaviorTreeNode rParentNode, ParallelFinishCondition rPCondition, string rNodeName)
 {
     return(new BehaviorTreeNode(rParentNode, new ConditionTrue()));
 }
コード例 #29
0
 public PriortySelectorNode(BehaviorTreeNode rParentNode, BehaviorTreeCondition rCondition = null)
     : base(rParentNode, rCondition)
 {
     mSelectIndexCur = mSelectIndexLast = BehaviorTreeNode._invalidChildNodeIndex;
 }
コード例 #30
0
 public BehaviorTreeNode oCreateLoopNode(BehaviorTreeNode rParentNode, string rNodeName, int rLoopCount)
 {
     return(new BehaviorTreeNode(rParentNode, new ConditionTrue()));
 }
コード例 #31
0
 public NonePrioritySelectorNode(BehaviorTreeNode rParentNode, BehaviorTreeCondition rCondition = null)
     : base(rParentNode, rCondition)
 {
 }
コード例 #32
0
 BehaviorTreeNode CreateNodeCommon(BehaviorTreeNode rSelfNode, BehaviorTreeNode rParentNode, string rNodeName)
 {
     return(new BehaviorTreeNode(rParentNode, new ConditionTrue()));
 }
コード例 #33
0
ファイル: NodeFactory.cs プロジェクト: meta-42/uEasyKit
 public BehaviorTreeNode CreateParalleNode(BehaviorTreeNode rParentNode, ParallelFinishCondition rPCondition, string rNodeName)
 {
     return new BehaviorTreeNode(rParentNode, new ConditionTrue());
 }