Code/k/VirtualCamera.cs
namespace Sandbox.k;

[Title( nameof(VirtualCamera))]
[Category( "k.Cameras" )]
[Icon("videocam")]
[EditorHandle("materials/gizmo/camera.png")]
public class VirtualCamera : Component
{
	[RequireComponent] private CameraComponent _camera { get; set; }

	public CameraComponent Camera => _camera;
	
	protected override void OnDisabled()
	{
		base.OnDisabled();
		DestroyExistingTransitionCameras();
		CreateTransitionCamera();
	}
	
	private void DestroyExistingTransitionCameras()
	{
		var transitionCameras = Scene.GetAllComponents<TransitionCamera>();
		foreach ( var transitionCamera in transitionCameras )
		{
			transitionCamera.DestroyGameObject();
		}
	}

	[Button]
	private void CreateTransitionCamera()
	{
		var instance = new GameObject();
		var transitionCamera = instance.AddComponent<TransitionCamera>();
		transitionCamera.CopyCamera( _camera );
	}
}