public static void PortPair(INodePort input, INodePort output, NodeGuiLayoutStyle intputStyle, NodeGuiLayoutStyle outputStyle) { GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true)); PortField(input, intputStyle); PortField(output, outputStyle); GUILayout.EndHorizontal(); }
public static NodeGuiLayoutStyle GetDefaultPortStyle(INodePort port) { var name = port == null ? string.Empty : port.ItemName; var label = port == null ? new GUIContent(string.Empty) : new GUIContent(port.ItemName); var style = new NodeGuiLayoutStyle() { Color = GetMainPortColor(port), Background = GetBackgroundPortColor(port), Options = new GUILayoutOption[] { GUILayout.MinWidth(30) }, Label = label, Name = name, }; return(style); }
public static void PortField(INodePort port, NodeGuiLayoutStyle portStyle) { if (port == null) { return; } if (portStyle.Options == null) { portStyle.Options = new GUILayoutOption[] { GUILayout.MinWidth(30) } } ; Vector2 position = Vector3.zero; portStyle.Label = portStyle.Label != null ? portStyle.Label : string.IsNullOrEmpty(portStyle.Name) ? new GUIContent(ObjectNames.NicifyVariableName(port.ItemName)) : new GUIContent(portStyle.Name); // If property is an input, display a regular property field and put a port handle on the left side if (port.Direction == PortIO.Input) { // Display a label EditorGUILayout.LabelField(portStyle.Label, portStyle.Options); var rect = GUILayoutUtility.GetLastRect(); position = rect.position - new Vector2(16, 0); } // If property is an output, display a text label and put a port handle on the right side else if (port.Direction == PortIO.Output) { // Display a label EditorGUILayout.LabelField(portStyle.Label, NodeEditorResources.OutputPort, portStyle.Options); var rect = GUILayoutUtility.GetLastRect(); position = rect.position + new Vector2(rect.width, 0); } PortField(position, port, portStyle.Color, portStyle.Background); }