using Sandbox.Diagnostics; namespace Editor; partial class ViewportTools { private Label FrameTimeLabel; private Label FrameRateLabel; private ResolutionModeButton ResolutionComboBox; /// public void UpdateViewportFromCookie() => ResolutionComboBox.UpdateViewportFromCookie(); private void BuildToolbarGame( Layout layout ) { { var group = AddGroup(); { ResolutionComboBox = new( sceneViewWidget ) { ToolTip = "Force a specific screen resolution or aspect ratio", FixedHeight = 22 }; group.Layout.Add( ResolutionComboBox ); } layout.Add( group ); } AddSeparator( layout ); { var group = AddGroup(); FrameTimeLabel = group.Layout.Add( new Label( $"--- ms" ) ); FrameTimeLabel.SetStyles( $"font-family: '{Theme.MonospaceFont}';" ); FrameTimeLabel.Alignment = TextFlag.Center; FrameTimeLabel.FixedWidth = 50; layout.Add( group ); } { var group = AddGroup(); FrameRateLabel = group.Layout.Add( new Label( $"--- FPS" ) ); FrameRateLabel.SetStyles( $"font-family: '{Theme.MonospaceFont}';" ); FrameRateLabel.Alignment = TextFlag.Center; FrameRateLabel.FixedWidth = 50; layout.Add( group ); } } [EditorEvent.Frame] public void OnFrame() { if ( sceneViewWidget.CurrentView != SceneViewWidget.ViewMode.Game ) return; if ( FrameTimeLabel == null || FrameRateLabel == null || ResolutionComboBox == null ) return; FrameTimeLabel.Text = $"{PerformanceStats.LastSecond.FrameAvg:0.00}ms"; FrameRateLabel.Text = $"{(1000.0f / PerformanceStats.LastSecond.FrameAvg):0} FPS"; ResolutionComboBox.Suffix = ResolutionComboBox.GetSizeString(); } } class ResolutionModeButton : Button { private int _selectedIndex = 0; private List