public static void DrawLogs(Rect rect)
        {
            Widgets.DrawMenuSection(rect);

            if (!GUIController.CurrentEntry?.isPatched ?? true)
            {
                DubGUI.Heading(rect, $"Loading{GenText.MarchingEllipsis(0f)}");
                return;
            }

            var columnsR = rect.TopPartPixels(50f);

            DrawColumns(columnsR);

            columns[(int)SortBy.Average].total = 0;

            rect.AdjustVerticallyBy(columnsR.height + 4);
            rect.height -= 2f;
            rect.width  -= 2;

            Rect innerRect = rect.AtZero();

            innerRect.height = listing.curY;
            if (innerRect.height > rect.height)
            {
                innerRect.width -= 17f;
            }

            viewFrustum    = rect.AtZero();    // Our view frustum starts at 0,0 from the rect we are given
            viewFrustum.y += ScrollPosition.y; // adjust our view frustum vertically based on the scroll position

            {                                  // Begin scope for Scroll View
                Widgets.BeginScrollView(rect, ref ScrollPosition, innerRect);
                GUI.BeginGroup(innerRect);
                listing.Begin(innerRect);

                Text.Anchor = TextAnchor.MiddleCenter;
                Text.Font   = GameFont.Tiny;


                float currentListHeight = BOX_HEIGHT;

                Text.Anchor = TextAnchor.MiddleLeft;

                lock (Analyzer.LogicLock)
                {
                    foreach (ProfileLog log in Analyzer.Logs)
                    {
                        DrawLog(log, ref currentListHeight);
                    }
                }

                listing.End();
                GUI.EndGroup();
                Widgets.EndScrollView();
            }


            DubGUI.ResetFont();
        }
Example #2
0
        public static void DrawLogs(Rect rect)
        {
            Widgets.DrawMenuSection(rect);

            if (!GUIController.CurrentEntry?.isPatched ?? true)
            {
                DubGUI.Heading(rect, $"Loading{GenText.MarchingEllipsis(0f)}");
                return;
            }

            Rect innerRect = rect.AtZero();

            innerRect.height = cachedListHeight;

            viewFrustum    = rect.AtZero();    // Our view frustum starts at 0,0 from the rect we are given
            viewFrustum.y += ScrollPosition.y; // adjust our view frustum vertically based on the scroll position

            {                                  // Begin scope for Scroll View
                Widgets.BeginScrollView(rect, ref ScrollPosition, innerRect, true);
                GUI.BeginGroup(innerRect);
                listing.Begin(innerRect);

                Text.Anchor = TextAnchor.MiddleCenter;
                Text.Font   = GameFont.Tiny;

                DrawColumns(listing.GetRect(BOX_HEIGHT));
                float currentListHeight = BOX_HEIGHT;

                Text.Anchor = TextAnchor.MiddleLeft;

                lock (Analyzer.LogicLock)
                {
                    foreach (ProfileLog log in Analyzer.Logs)
                    {
                        DrawLog(log, ref currentListHeight);
                    }
                }

                cachedListHeight = currentListHeight;

                listing.End();
                GUI.EndGroup();
                Widgets.EndScrollView();
            }

            DubGUI.ResetFont();
        }
Example #3
0
        //              [ Left File ]       [ Right File ]     [ Delta ]
        // Calls Mean       25000               23000         -2000 ( -8% )
        // Time Mean       0.037ms             0.031ms        -0.006ms ( - 16% )
        private void DrawComparison(Rect r)
        {
            var topPart = r.TopPartPixels(50f);

            // have not selected any entries to compare.
            if (!DrawSelectEntries(topPart))
            {
                return;
            }

            r.AdjustVerticallyBy(50f);

            var anchor  = Text.Anchor;
            var colours = new Color[] { Color.red, GUI.color, Color.green };

            var headerRect = r.TopPartPixels(30f);

            r.AdjustVerticallyBy(30f);
            Text.Anchor = TextAnchor.MiddleCenter;

            // [     Row     ]  [   Left Stats   ]  [ Right Stats ] [    Delta    ]
            DubGUI.Heading(headerRect.LeftHalf().LeftHalf(), "Row");
            DubGUI.Heading(headerRect.LeftHalf().RightHalf(), "Left Stats");
            DubGUI.Heading(headerRect.RightHalf().LeftHalf(), "Right Stats");
            DubGUI.Heading(headerRect.RightHalf().RightHalf(), "Delta");

            GUI.color *= new Color(1f, 1f, 1f, 0.4f);
            Widgets.DrawLineHorizontal(r.x, r.y, r.width);
            GUI.color = Color.white;

            Text.Anchor = anchor;

            for (int i = 0; i < 4; i++)
            {
                if (i > 0)
                {
                    Text.Anchor = TextAnchor.MiddleCenter;
                }

                var column = new Rect(r.x + i * (r.width / 4.0f), r.y, r.width / 4.0f, r.height);

                var rect = column.TopPartPixels(Text.LineHeight + 4f);
                foreach (var row in rows)
                {
                    // i is the current column, 0 = name, 1 = lhs, 2 = rhs, 3 = delta
                    switch (i)
                    {
                    case 0: Widgets.Label(rect, "  " + row.name); break;

                    case 1: Widgets.Label(rect, row.IsInt() ? row.Int(lhsStats).ToString() : $"{row.Double(lhsStats):F5}"); break;

                    case 2: Widgets.Label(rect, row.IsInt() ? row.Int(rhsStats).ToString() : $"{row.Double(rhsStats):F5}"); break;

                    case 3:

                        var    sb = new StringBuilder();
                        var    sign = "";
                        double delta, dP = 0;
                        if (row.IsInt())
                        {
                            delta = row.Int(rhsStats) - row.Int(lhsStats);
                            dP    = (delta / (double)row.Int(lhsStats)) * 100;
                        }
                        else
                        {
                            delta = row.Double(rhsStats) - row.Double(lhsStats);
                            dP    = (delta / row.Double(lhsStats)) * 100;
                        }

                        sign = (delta > 0) ? "+" : "";
                        sb.Append($"{sign}{delta:F5} ( {sign}{dP:F2}% )");

                        var color = dP switch
                        {
                            < -2.5 => colours[2],
                            > 2.5 => colours[0],
                            _ => colours[1],
                        };

                        GUI.color = color;
                        Widgets.Label(rect, sb.ToString());
                        GUI.color = colours[1];

                        break;
                    }

                    column.AdjustVerticallyBy(Text.LineHeight + 4f);
                    rect = column.TopPartPixels(Text.LineHeight + 4f);
                }