using System.Collections.Generic; using Microsoft.Xna.Framework; namespace Foresight.Engine.Renderer { public class RendererManager { internal readonly Game Game; internal readonly ResolutionManager ResolutionManager; public readonly GraphicsDeviceManager GraphicsDeviceManager; private readonly Renderer2d _renderer2d; private readonly Renderer3d _renderer3d; private readonly Queue _2dRenderables = new Queue(); private readonly Queue _3dRenderables = new Queue(); public RendererManager(Game game) { Game = game; GraphicsDeviceManager = new GraphicsDeviceManager(game); ResolutionManager = new ResolutionManager(this, 1024, 768); _renderer2d = new Renderer2d(this); _renderer3d = new Renderer3d(this); } public void Render(GameTime gameTime) { // TODO: fps or smth // 3D first so 2d gets drawn on top _renderer3d.Render(_3dRenderables); _renderer2d.Render(_2dRenderables); } public void Add2DRenderable(IRenderable renderable) => _2dRenderables.Enqueue(renderable); public void Add3DRenderable(IRenderable renderable) => _3dRenderables.Enqueue(renderable); public void Dispose() { _renderer2d?.Dispose(); } } }