Editor/SceneCameraExtensions.cs
using Sandbox;
using System;

namespace IconRenderer;

public static class SceneCameraExtensions
{
	public static void FitModel( this CameraComponent camera, ModelRenderer model )
	{
		if (!model.IsValid())
			return;
		
		var bounds = model.Model.Bounds;
		var max = bounds.Size;
		var radius = MathF.Max( max.x, MathF.Max( max.y, max.z ) );
		var dist = radius / MathF.Sin( camera.FieldOfView.DegreeToRadian() );

		var viewDirection = Vector3.Forward;
		var pos = viewDirection * dist + bounds.Center;

		camera.WorldPosition = pos;
		camera.WorldRotation = global::Rotation.LookAt( bounds.Center - camera.WorldPosition ).RotateAroundAxis( -viewDirection, 90 );
	}
}