Code/PanelTypeReference.cs

A small helper that stores a panel type name and resolves it to a TypeDescription via the game's TypeLibrary. It keeps scene serialization stable by using a string name and resolves it to a ScreenPanel-derived type when needed.

Reflection
using Sandbox;

namespace PanelRenderTarget;

// Stores a panel type by name so scene serialization remains stable.
public sealed class PanelTypeReference
{
	public string TypeName { get; set; }

	public TypeDescription Resolve()
	{
		if ( string.IsNullOrWhiteSpace( TypeName ) )
			return null;

		var typeLibrary = Game.TypeLibrary;
		if ( typeLibrary is null )
			return null;

		return typeLibrary.GetType( typeof( PanelRenderTarget.ScreenPanel ), TypeName, true, true );
	}
}