System/ImGuiSystem.cs
namespace Duccsoft.ImGui;

internal partial class ImGuiSystem : GameObjectSystem<ImGuiSystem>
{
	public ImGuiSystem( Scene scene ) : base( scene )
	{
		InitStyle();
		InitInput();
		Listen( Stage.StartUpdate, -100, StartUpdate, "ImGui Start Update" );
		Listen( Stage.FinishUpdate, 100, FinishUpdate, "ImGui FinishUpdate" );
	}

	private void StartUpdate()
	{
		if ( !Game.IsPlaying )
			return;

		SwapBounds();
		ClearElements();
		UpdateTargetCamera();
		InitializeInput();
	}

	private void FinishUpdate()
	{
		if ( !Game.IsPlaying )
			return;

		FinalizeBounds();
		RemoveExpiredDrawLists();
		BuildDrawLists();
		ClearInput();
	}
}