namespace AcDream.App.Rendering; internal interface IGameRenderResourceLifetime { TerrainAtlas AcquireTerrainAtlas(Func factory); } /// /// Sole lifetime owner for render resources that are borrowed by, but not /// owned by, their renderers. /// internal sealed class GameRenderResourceLifetime : IGameRenderResourceLifetime { private readonly OwnedResourceSlot _terrainAtlas = new(); public TerrainAtlas AcquireTerrainAtlas(Func factory) => _terrainAtlas.Acquire(factory); public void ReleaseTerrainAtlas() => _terrainAtlas.Release(); }