using System; using RebootKit.Engine.Main; using RebootKit.Engine.UI; using UnityEngine; using UnityEngine.UIElements; namespace RebootKit.Engine.Services.Development { public class DebugOverlayView : UIDocumentView { const string k_DebugLabelClassName = "rr__debug-label"; VisualElement m_RootElement; Label m_FPSLabel; Label m_GameModeLabel; void Update() { if (m_RootElement == null) { return; } Resolution resolution = Screen.currentResolution; m_FPSLabel.text = $"fps: {Mathf.RoundToInt(1f / Time.deltaTime)} | dt: {Time.deltaTime:F4}ms | runtime: {Time.time:F4}s | resolution: {resolution.width}x{resolution.height}@{resolution.refreshRateRatio}Hz"; m_GameModeLabel.text = RR.GameModes.ActiveGameMode.CurrentValue != null ? $"Game Mode: {RR.GameModes.ActiveGameMode.CurrentValue.GetType().Name}" : "Game Mode: none"; } public override VisualElement Build() { m_RootElement = new VisualElement(); CreateLabel($"Toggle Overlay [F3] | RebootKit | game: {Application.productName}, version: {Application.version}"); m_FPSLabel = CreateLabel($"FPS: {Application.targetFrameRate}"); m_GameModeLabel = CreateLabel("Game Mode: none"); return m_RootElement; } Label CreateLabel(string text) { Label label = (Label)LabelBuilder.New(text).Build(); label.AddToClassList(k_DebugLabelClassName); m_RootElement.Add(label); return label; } } }