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:
@@ -50,6 +50,7 @@ namespace OpenRA.Graphics
|
|||||||
internal readonly TerrainRenderer terrainRenderer;
|
internal readonly TerrainRenderer terrainRenderer;
|
||||||
internal readonly ShroudRenderer shroudRenderer;
|
internal readonly ShroudRenderer shroudRenderer;
|
||||||
internal readonly HardwarePalette palette;
|
internal readonly HardwarePalette palette;
|
||||||
|
internal Cache<string, PaletteReference> palettes;
|
||||||
|
|
||||||
internal WorldRenderer(World world)
|
internal WorldRenderer(World world)
|
||||||
{
|
{
|
||||||
@@ -60,8 +61,15 @@ namespace OpenRA.Graphics
|
|||||||
|
|
||||||
terrainRenderer = new TerrainRenderer(world, this);
|
terrainRenderer = new TerrainRenderer(world, this);
|
||||||
shroudRenderer = new ShroudRenderer(world);
|
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 int GetPaletteIndex(string name) { return palette.GetPaletteIndex(name); }
|
||||||
public Palette GetPalette(string name) { return palette.GetPalette(name); }
|
public Palette GetPalette(string name) { return palette.GetPalette(name); }
|
||||||
public void AddPalette(string name, Palette pal, bool allowModifiers) { palette.AddPalette(name, pal, allowModifiers); }
|
public void AddPalette(string name, Palette pal, bool allowModifiers) { palette.AddPalette(name, pal, allowModifiers); }
|
||||||
|
|||||||
Reference in New Issue
Block a user