k/CameraSetupComponent.cs
namespace Sandbox.k;

[Title( nameof(CameraSetupComponent))]
[Category( "k.Cameras" )]
public sealed class CameraSetupComponent : Component
{
	[RequireComponent] private CameraComponent _camera { get; set; }

	private float _currentFovPreference;
	
	protected override void OnAwake()
	{
		_currentFovPreference = Preferences.FieldOfView;
		UpdateFov(_currentFovPreference);
	}

	protected override void OnUpdate()
	{
		// its ok mate
		if (_currentFovPreference == Preferences.FieldOfView) return;
		_currentFovPreference = Preferences.FieldOfView;
		UpdateFov(_currentFovPreference);
	}
	
	private void UpdateFov(float fov)
	{
		var fovMultiplier = Application.IsEditor ? 0.55f : 0.75f;
		_camera.FieldOfView = Screen.CreateVerticalFieldOfView(fov * fovMultiplier);
	}
}