using MrGameEng.Core;
using MrGameEng.Graphics;
namespace MrGameEng.Tilemaps;
/// Wires the tilemaps module into a .
public static class SceneTilemapExtensions
{
///
/// Adds to the scene's draw phase, right before the
/// renderer flush. Call from OnLoad after UseRenderer2D().
///
public static void UseTilemaps(this Scene scene)
{
var renderer =
scene.Context.Services.GetOrDefault()
?? throw new InvalidOperationException(
"UseTilemaps requires UseRenderer2D to be called first."
);
var systems = scene.DrawSystems.ChildSystems;
for (var i = 0; i < systems.Count; i++)
{
if (systems[i] is RenderFlushSystem)
{
scene.DrawSystems.Insert(i, new TilemapRenderSystem(renderer));
return;
}
}
throw new InvalidOperationException(
"RenderFlushSystem not found (is UseRenderer2D wired on this scene?)."
);
}
}