public static int RowsForType(Type type) { var fields = type.GetFields(BindingFlags.Instance | BindingFlags.Public); var rows = 0; foreach (var field in fields) { rows += MathGUI.RowsForType(field.FieldType); } return(rows); }
public static int ColumnsForType(Type type) { var fields = type.GetFields(BindingFlags.Instance | BindingFlags.Public); var columns = 0; foreach (var field in fields) { columns = Mathf.Max(MathGUI.ColumnsForType(field.FieldType), columns); } return(columns); }
public static void CellGUI(Rect rect, object data, int rows) { var fields = data.GetType().GetFields(BindingFlags.Instance | BindingFlags.Public); var columns = ColumnsForType(data.GetType()); var labelWidth = MaxLabelWidthForType(data.GetType()); var fieldWidth = (rect.width - labelWidth) / columns; var fieldHeight = rect.height / rows; var currentCell = new Rect(rect.x + labelWidth, rect.y, fieldWidth, fieldHeight); foreach (var field in fields) { var labelCell = new Rect(rect.x, currentCell.y, labelWidth, fieldHeight); GUI.Label(labelCell, field.Name, labelStyle); var value = field.GetValue(data); MathGUI.FieldGUI(currentCell, value); currentCell.y += fieldHeight * MathGUI.RowsForType(field.FieldType); } }