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(); }
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(); }
// [ 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); }