Exemplo n.º 1
0
        private void ProcessGroup(Group node, NodeHandle nodeHandle, NodeHandle activeStateNode, bool addActionInterfaces = false)
        {
            var parent = nodeHandle.transform;

            if (addActionInterfaces)
            {
                foreach (var child in node)
                {
                    var gameObject = TraverseInternal(child, activeStateNode);

                    var childNodeHandle = gameObject.GetComponent <NodeHandle>();

                    if (!NodeUtils.HasGameObjectsUnsafe(child.GetNativeReference()))
                    {
                        NodeUtils.AddGameObjectReferenceUnsafe(child.GetNativeReference(), gameObject);

                        childNodeHandle.inNodeUtilsRegistry = true;
                        child.AddActionInterface(_actionReceiver, NodeActionEvent.IS_TRAVERSABLE);
                        child.AddActionInterface(_actionReceiver, NodeActionEvent.IS_NOT_TRAVERSABLE);
                    }

                    gameObject.transform.SetParent(parent, false);
                }

                return;
            }

            foreach (var child in node)
            {
                var gameObject = TraverseInternal(child, activeStateNode);

                gameObject.transform.SetParent(parent, false);
            }
        }
Exemplo n.º 2
0
        private GameObject ProcessDynamicLoaderNode(DynamicLoader node, NodeHandle nodeHandle)
        {
            // Possibly we can add action interfaces for dyn load childs as they will get traversable if they have node actons
            if (NodeUtils.FindGameObjectsUnsafe(node.GetNativeReference(), out List <GameObject> list))
            {
                return(list[0]); // We are already in list, lets return first object wich is our main registered node
            }
            // We are not registered
            NodeUtils.AddGameObjectReferenceUnsafe(node.GetNativeReference(), nodeHandle.gameObject);

            nodeHandle.inNodeUtilsRegistry = true;  // Added to registry

            return(null);
        }