Skip to content

NodeEditorGUILayout.InstancePortList

Thor Brigsted edited this page Jun 11, 2018 · 3 revisions

DFraw an editable list of instance ports. Port names are named as "[fieldName] [index]"

public static void InstancePortList(string fieldName, Type type, SerializedObject serializedObject, XNode.Node.ConnectionType connectionType = XNode.Node.ConnectionType.Multiple);
Parameters Summary
fieldName Base fieldName of the instance ports. If points to the field name of a list, the list will be used as backing values.
type Instance NodePort value type.
serializedObject The serializedObject of the node.
connectionType Connection type of added instance ports

Example

// ExampleNode.cs

public class ExampleNode : Node {
    // We will display the list through custom editor, so hide it from the default editor
    [HideInInspector] public List<int> choices;
    
    public override object GetValue(NodePort port) {
        // The instance ports created this way will use the list fieldName and index number, separated by space
        if (port.fieldName.StartsWith("choices ")) {
            int index = int.Parse(port.fieldName.Split(' ')[1]);
            return choices[index];
        }
        return null;
    }
}
// Editor/ExampleNodeEditor.cs

[CustomNodeEditor(typeof(ExampleNode))]
public class ExampleNodeEditor : NodeEditor {
    public override void OnBodyGUI() {
        // Draw default editor first
        base.OnBodyGUI();
        // Draw list with instance ports
        NodeEditorGUILayout.InstancePortList("choices", typeof(int), serializedObject);
    }
}

See also: AddInstancePort, RemoveInstancePort

Clone this wiki locally