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?)." ); } }