示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
            }
        }