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!"); } }
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(); }
protected void SetParentNode(BehaviorTreeNode rParentNode) { if (rParentNode == null) { return; } mParentNode = rParentNode; }
public void SetActiveNode(BehaviorTreeNode rNode) { mActiveNodeLast = mActiveNodeCur; mActiveNodeCur = rNode; if (mParentNode != null) { mParentNode.SetActiveNode(rNode); } }
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; } }
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; } }
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); }
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]); } }
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); }
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); }
public void SetActiveNode(BehaviorTreeNode rNode) { mActiveNodeLast = mActiveNodeCur; mActiveNodeCur = rNode; if (mParentNode != null) mParentNode.SetActiveNode(rNode); }
public PriortySelectorNode(BehaviorTreeNode rParentNode, BehaviorTreeCondition rCondition = null) : base(rParentNode, rCondition) { mSelectIndexCur = mSelectIndexLast = BehaviorTreeNode._invalidChildNodeIndex; }
public ActionNode(BehaviorTreeNode rParentNode, BehaviorTreeCondition rCondtion = null) : base(rParentNode, rCondtion) { mActionStatus = NodeActionStaus.Ready; mNeedExit = false; }
public BehaviorTreeNode CreateSequenceNode(BehaviorTreeNode rParentNode, string rNodeName) { return new BehaviorTreeNode(rParentNode, new ConditionTrue()); }
public LoopNode(BehaviorTreeNode rParentNode, BehaviorTreeCondition rCondition = null, int rLoopCount = _infiniteLoop) : base(rParentNode, rCondition) { mLoopCount = rLoopCount; mCountCur = 0; }
public BehaviorTreeNode CreateNonePrioritySelectorNode(BehaviorTreeNode rParentNode, string rNodeName) { return(new BehaviorTreeNode(rParentNode, new ConditionTrue())); }
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; }
BehaviorTreeNode CreateNodeCommon(BehaviorTreeNode rSelfNode, BehaviorTreeNode rParentNode, string rNodeName) { return new BehaviorTreeNode(rParentNode, new ConditionTrue()); }
public BehaviorTreeNode CreatePrioritySelectorNode(BehaviorTreeNode rParentNode, string rNodeName) { return new BehaviorTreeNode(rParentNode, new ConditionTrue()); }
public BehaviorTreeNode CreateActionNode(BehaviorTreeNode rParentNode, string rNodeName) { return(new BehaviorTreeNode(rParentNode, new ConditionTrue())); }
public SequenceNode(BehaviorTreeNode rParentNode, BehaviorTreeCondition rCondition = null) : base(rParentNode, rCondition) { mNodeIndexCur = BehaviorTreeNode._invalidChildNodeIndex; }
protected void SetParentNode(BehaviorTreeNode rParentNode) { if (rParentNode == null) return; mParentNode = rParentNode; }
public NonePrioritySelectorNode(BehaviorTreeNode rParentNode, BehaviorTreeCondition rCondition = null) : base(rParentNode, rCondition) { }
public BehaviorTreeNode oCreateLoopNode(BehaviorTreeNode rParentNode, string rNodeName, int rLoopCount) { return new BehaviorTreeNode(rParentNode, new ConditionTrue()); }
public BehaviorTreeNode CreateParalleNode(BehaviorTreeNode rParentNode, ParallelFinishCondition rPCondition, string rNodeName) { return(new BehaviorTreeNode(rParentNode, new ConditionTrue())); }
public BehaviorTreeNode oCreateLoopNode(BehaviorTreeNode rParentNode, string rNodeName, int rLoopCount) { return(new BehaviorTreeNode(rParentNode, new ConditionTrue())); }
BehaviorTreeNode CreateNodeCommon(BehaviorTreeNode rSelfNode, BehaviorTreeNode rParentNode, string rNodeName) { return(new BehaviorTreeNode(rParentNode, new ConditionTrue())); }
public BehaviorTreeNode CreateParalleNode(BehaviorTreeNode rParentNode, ParallelFinishCondition rPCondition, string rNodeName) { return new BehaviorTreeNode(rParentNode, new ConditionTrue()); }