Add a cache of PaletteReferences to WorldRenderer.

I don't expect any perf improvements by using this
cache, as you're simply moving the row lookup from
render-time to fetch-time. However, this is a
cleaner abstraction, and allows us to fail early
if the palette doesn't exist.
This commit is contained in:
Paul Chote
2013-02-24 11:31:41 +13:00
parent f0ba0ce2e8
commit 95871e6cc1

View File

@@ -50,6 +50,7 @@ namespace OpenRA.Graphics
internal readonly TerrainRenderer terrainRenderer;
internal readonly ShroudRenderer shroudRenderer;
internal readonly HardwarePalette palette;
internal Cache<string, PaletteReference> palettes;
internal WorldRenderer(World world)
{
@@ -60,8 +61,15 @@ namespace OpenRA.Graphics
terrainRenderer = new TerrainRenderer(world, this);
shroudRenderer = new ShroudRenderer(world);
palettes = new Cache<string, PaletteReference>(CreatePaletteReference);
}
PaletteReference CreatePaletteReference(string name)
{
return new PaletteReference(name, palette.GetPaletteIndex(name));
}
public PaletteReference Palette(string name) { return palettes[name]; }
public int GetPaletteIndex(string name) { return palette.GetPaletteIndex(name); }
public Palette GetPalette(string name) { return palette.GetPalette(name); }
public void AddPalette(string name, Palette pal, bool allowModifiers) { palette.AddPalette(name, pal, allowModifiers); }