Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
                }
            }
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
                }
            }
        }
Exemplo n.º 5
0
        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);
            }
        }