private void RenderLinks(float scale, NodeEditorField highlightedField)
                {
                    foreach (NodeEditorGUI node in _editableObjects)
                    {
                        if (node.HasOutput())
                        {
                            RenderLinkIcon(node.GetOutputField()._position, kOutputLinkIconColor, scale, false);
                        }

                        foreach (NodeEditorField nodeInputField in node.GetInputFields())
                        {
                            Color color;

                            if (_dragMode == eDragType.Custom &&
                                (nodeInputField._type != _draggingNodeFieldFrom._type && !_draggingNodeFieldFrom._type.IsAssignableFrom(nodeInputField._type)))
                            {
                                color = kUnusableLinkIconColor;
                            }
                            else
                            {
                                color = kInputLinkIconColor;
                            }

                            RenderStaticValueBox(nodeInputField, nodeInputField._position, kUnusableLinkIconColor, scale);
                            RenderLinkIcon(nodeInputField._position, color, scale, nodeInputField == highlightedField);
                        }
                    }

                    foreach (NodeEditorGUI node in _editableObjects)
                    {
                        foreach (NodeEditorField nodeInputField in node.GetInputFields())
                        {
                            if (_dragMode != eDragType.Custom || _draggingNodeFieldTo != nodeInputField)
                            {
                                int linkedOutputNodeId = GetNodeInputFieldLinkNodeId(nodeInputField);

                                if (linkedOutputNodeId != -1)
                                {
                                    NodeEditorGUI outputNode = GetEditableObject(linkedOutputNodeId);

                                    if (outputNode != null && outputNode.HasOutput())
                                    {
                                        RenderLink(outputNode.GetOutputField()._position, nodeInputField._position, _dragMode == eDragType.Custom ? Color.Lerp(kLinkLineColor, Color.black, 0.3f) : kLinkLineColor, scale);
                                    }
                                }
                            }
                        }
                    }

                    if (_dragMode == eDragType.Custom)
                    {
                        //Instead of rendering current dragging link, render it to mouse position
                        RenderLink(_draggingNodeFieldFrom._position, Event.current.mousePosition, kLinkLineColor, scale, true);
                    }
                }