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); } }
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); }