Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
        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;
                }
            }
        }