private void DrawActiveConnection() { if (HeldSocket == null) { return; } Vector2 output = HeldSocket.SocketType == SocketType.Output ? TerraUtility.GetSocketRect(HeldSocket).center : Event.current.mousePosition; Vector2 input = HeldSocket.SocketType == SocketType.Input ? TerraUtility.GetSocketRect(HeldSocket).center : Event.current.mousePosition; TerraGUI.DrawConnection(output, input, TerraUtility.TypeToColor(HeldSocket.FieldType)); }
private static void DrawSocket(NodeSocket socket) { Rect socketRect = TerraUtility.GetSocketRect(socket); if (socket.SocketType == SocketType.Output) { foreach (SocketConnection connection in socket.Connections) { DrawConnection(socketRect.center, TerraUtility.GetSocketRect(connection.Socket).center, TerraUtility.TypeToColor(socket.FieldType)); } } Handles.DrawSolidRectangleWithOutline(socketRect, Color.white, new Color(0, 0, 0, 0.6f)); Handles.DrawSolidRectangleWithOutline(new Rect(socket.SocketType == SocketType.Input ? socketRect.position : (socketRect.position + new Vector2(socketRect.size.x, 0) - new Vector2(socketRect.size.x * 0.3f, 0)), new Vector2(socketRect.size.x * 0.4f, socketRect.size.y)), TerraUtility.TypeToColor(socket.FieldType), new Color(0, 0, 0, 0.6f)); if (socket.UseField) { DrawSocketField(socket, socketRect); } else { GUI.enabled = false; GUIStyle textStyle = new GUIStyle(EditorStyles.centeredGreyMiniLabel); textStyle.alignment = socket.SocketType == SocketType.Input ? TextAnchor.MiddleLeft : TextAnchor.MiddleRight; GUI.TextField(new Rect(socketRect.position + (socket.SocketType == SocketType.Input ? new Vector2(15, -4) : new Vector2(-105, -4)), new Vector2(100, 16)), socket.FieldName, textStyle); GUI.enabled = true; } }