private static void DrawMembers (bool isInput, GraphEditor editor, Node node, Rect rect, SerializedObject serializedObject, IEnumerable <Socket> sockets) { rect = new Rect(rect); foreach (var socket in sockets) { // Draw the socket var h = EditorGUIUtility.singleLineHeight; var socketRect = new Rect(rect); if (isInput) { socketRect.x -= SOCKET_RADIUS * 2 + SOCKET_PADDING; } else { socketRect.x += socketRect.width + SOCKET_PADDING; } socketRect.width = SOCKET_RADIUS * 2; socketRect.height = SOCKET_RADIUS * 2; socketRect.y += (h - socketRect.height) / 2; SocketEditor.DrawSocket(editor, node, socket, socketRect); // Draw the member DrawMember(isInput, editor, node, ref rect, serializedObject, socket); rect.y += rect.height + LINE_PADDING; } }
private static void DrawMembers (bool isInput, GraphEditor editor, Node node, Rect rect, SerializedObject serializedObject, IEnumerable <Socket> sockets) { rect = new Rect(rect); foreach (var socket in sockets) { var h = EditorGUIUtility.singleLineHeight; var socketRect = new Rect(rect); if (isInput) { socketRect.x -= SOCKET_RADIUS * 2 + SOCKET_PADDING; } else { socketRect.x += socketRect.width + SOCKET_PADDING; } socketRect.width = SOCKET_RADIUS * 2; socketRect.height = SOCKET_RADIUS * 2; socketRect.y += (h - socketRect.height) / 2; SocketEditor.DrawSocket(editor, node, socket, socketRect); string name = node.GetSocketDisplayName(socket); bool editable = node.IsSocketEditable(socket); if (editable) { rect.height = h; var type = node.GetSocketType(socket); var value = node.GetSocketValue(socket); var prop = serializedObject.FindProperty(socket.FieldName); if (prop != null) { EditorGUI.PropertyField(rect, prop, GUIContent.none, true); } else if (type == null) { GUI.enabled = false; EditorGUI.TextField(rect, GUIContent.none, "Unknown Type"); GUI.enabled = true; } else { value = GUIExtension.DrawField(rect, value, type, GUIContent.none, true); node.SetSocketValue(socket, value); } rect.y += rect.height + LINE_PADDING; } else { rect.height = EditorGUIUtility.singleLineHeight; EditorGUI.LabelField(rect, name); rect.y += rect.height + LINE_PADDING; } } }