private bool RemoveNodeAssetRecursive(BehaviourTreeNode node, BehaviourTreeNode toRemove) { bool removed = false; if (node.IsParentNode()) { var asParent = node.AsParentNode(); var childNodes = asParent.GetChildNodes(); if (childNodes.Contains(toRemove)) { asParent.RemoveChild(toRemove); return(true); } else { foreach (BehaviourTreeNode childNode in childNodes) { if (RemoveNodeAssetRecursive(childNode, toRemove)) { removed = true; break; } } } } return(removed); }
private void DestroyChildrenNodes(BehaviourTreeNode node) { if (!node.IsParentNode()) { return; } var asParent = node.AsParentNode(); var children = asParent.GetChildNodes(); if (children != null && children.Count > 0) { List <BehaviourTreeNode> toRemove = new List <BehaviourTreeNode>(); foreach (var child in children) { DestroyChildrenNodes(child); toRemove.Add(child); } foreach (BehaviourTreeNode treeNode in toRemove) { asParent.RemoveChild(treeNode); DestroyImmediate(treeNode, true); } } }
private bool FindNodeRecursive(BehaviourTreeNode node, BehaviourTreeNode toFind) { if (node == null) { return(false); } if (node == toFind) { return(true); } if (node.IsParentNode()) { var childNodes = node.AsParentNode().GetChildNodes(); for (int i = 0; i < childNodes.Count; i++) { if (FindNodeRecursive(childNodes[i], toFind)) { return(true); } } } return(false); }
private void ProcessNodeRecurrent(BehaviourTreeNode node, List <BehaviourTreeNode> nodes) { nodes.Add(node); if (node.IsParentNode()) { var children = node.AsParentNode().GetChildNodes(); for (int i = 0; i < children.Count; i++) { ProcessNodeRecurrent(children[i], nodes); } } }
private void ProcessNodeRecurrent(BehaviourTreeNode node, List <BehaviourTreeNode> nodes) { nodes.Add(node); if (!node.IsParentNode()) { return; } var children = node.AsParentNode().GetChildNodes(); foreach (BehaviourTreeNode child in children) { ProcessNodeRecurrent(child, nodes); } }