public abstract void DoComponentContents(Rect inRect, Flow flow);
public override void DoComponentContents(Rect inRect, Flow flow) { Rect viewRect = new Rect(inRect); if (filter != null) { this.filterExpr = Widgets.TextField(new Rect(inRect.x, inRect.y, 200f, 30f), this.filterExpr); viewRect.yMin += 35f; } if (dynamicSorter != null) { items = dynamicSorter(items); } Rect contentRect = new Rect(0f, 0f, totalOptionsWidth > 0 ? totalOptionsWidth : viewRect.width, viewRect.height - QOLMod.HorizontalScrollbarHeight()); Widgets.BeginScrollView(viewRect, ref this.scrollPosition, contentRect, true); beginIteration(flow); Rect r = new Rect(contentRect.x, contentRect.y, 0, 0); float columnStart = r.x, maxColumnWidth = 0; foreach (T d in items) { if (filter == null || filter(filterExpr, d)) { advanceIteration(d); r.height = 0; foreach (BaseRenderer cr in childs) { r.height = Mathf.Max(r.height, cr.getHeight()); } if (r.yMax > contentRect.height) { r.y = contentRect.yMin; r.x += maxColumnWidth + horizontalGap; columnStart = r.x; maxColumnWidth = 0; } foreach (BaseRenderer cr in childs) { r.width = cr.getWidth(); cr.DoComponentContents(r, flow); r.x += r.width + childGap; } maxColumnWidth = Mathf.Max(maxColumnWidth, r.x - columnStart - childGap); r.x = columnStart; r.y += r.height + verticalGap; } } totalOptionsWidth = columnStart + maxColumnWidth + horizontalGap - contentRect.x; endIteration(flow); Widgets.EndScrollView(); }