Adjust DisabledOverlay.ModifyRender to be more efficient.

When not disabled, ModifyRender doesn't actually alter the sequence, so we can just return it directly and avoid adding another layer of enumerable. If it is disabled, then the modifying enumerable has one less condition to check inside the loop.
This commit is contained in:
RoosterDragon
2015-02-23 20:26:54 +00:00
parent 0c9960ae1b
commit 6baa35a763
2 changed files with 11 additions and 2 deletions

View File

@@ -21,11 +21,19 @@ namespace OpenRA.Mods.Common.Traits
{
public IEnumerable<IRenderable> ModifyRender(Actor self, WorldRenderer wr, IEnumerable<IRenderable> r)
{
var disabled = self.IsDisabled();
if (!self.IsDisabled())
return r;
return ModifiedRender(self, wr, r);
}
IEnumerable<IRenderable> ModifiedRender(Actor self, WorldRenderer wr, IEnumerable<IRenderable> r)
{
foreach (var a in r)
{
yield return a;
if (disabled && !a.IsDecoration)
if (!a.IsDecoration)
yield return a.WithPalette(wr.Palette("disabled"))
.WithZOffset(a.ZOffset + 1)
.AsDecoration();

View File

@@ -32,6 +32,7 @@ namespace OpenRA.Mods.Common.Traits
{
if (IsTraitDisabled)
return r;
return ModifiedRender(self, wr, r);
}