Editor/UI/ViewportStats.cs
using Sandbox;
using Editor;
namespace HumanoidRigger.Editor;
sealed class ViewportStats : SceneCustomObject
{
public string Text {get;set;}="";
public float Scale {get;set;}=1;
public bool ShowNavigation {get;set;}=true;
public ViewportStats(SceneWorld world):base(world)
{
RenderLayer=SceneRenderLayer.OverlayWithoutDepth;
Bounds=BBox.FromPositionAndSize(Vector3.Zero,float.MaxValue);
}
public override void RenderSceneObject()
{
if(string.IsNullOrEmpty(Text))return;
Graphics.DrawText(new Rect(new Vector2(12,12)*Scale,new Vector2(380,44)*Scale),Text,Theme.TextLight,Theme.DefaultFont,12*Scale,flags:TextFlag.LeftTop);
if(!ShowNavigation)return;
var controls=new[]{("3d_rotation","Rotate: Left mouse / Alt + Right mouse"),("open_with","Pan: Right mouse / Alt + Left mouse"),("height","Zoom: Middle mouse")};
for(int i=0;i<controls.Length;i++)
{
float y=Graphics.Viewport.Height-(12+(controls.Length-i)*28)*Scale;
Graphics.DrawIcon(new Rect(12*Scale,y,24*Scale,24*Scale),controls[i].Item1,Theme.TextLight,20*Scale,TextFlag.Center);
Graphics.DrawText(new Rect(44*Scale,y,350*Scale,24*Scale),controls[i].Item2,Theme.TextLight,Theme.DefaultFont,11*Scale,flags:TextFlag.LeftCenter);
}
}
}