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