Exemple #1
0
 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();
        }