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