Example #1
0
        /// <summary>
        /// Create a node instance from the reflected type data
        /// </summary>
        public AbstractNode CreateInstance()
        {
            AbstractNode node = ScriptableObject.CreateInstance(type) as AbstractNode;

            node.RegenerateGuid();
            node.name = name;

            // Setup ports
            foreach (var port in ports)
            {
                // Now it's basically everything from reflection.
                // TODO Get rid of reflection?
                node.AddPort(new NodePort()
                {
                    node      = node,
                    portName  = port.portName,
                    isMulti   = port.isMulti,
                    isInput   = port.isInput,
                    type      = port.type,
                    fieldName = port.fieldName
                });
            }

            // If we spawned a FuncNode, bind it to the method.
            if (method != null && node is FuncNode func)
            {
                func.CreateDelegate(method);
            }

            return(node);
        }