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:
@@ -21,11 +21,19 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
public IEnumerable<IRenderable> ModifyRender(Actor self, WorldRenderer wr, IEnumerable<IRenderable> r)
|
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)
|
foreach (var a in r)
|
||||||
{
|
{
|
||||||
yield return a;
|
yield return a;
|
||||||
if (disabled && !a.IsDecoration)
|
|
||||||
|
if (!a.IsDecoration)
|
||||||
yield return a.WithPalette(wr.Palette("disabled"))
|
yield return a.WithPalette(wr.Palette("disabled"))
|
||||||
.WithZOffset(a.ZOffset + 1)
|
.WithZOffset(a.ZOffset + 1)
|
||||||
.AsDecoration();
|
.AsDecoration();
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
if (IsTraitDisabled)
|
if (IsTraitDisabled)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
return ModifiedRender(self, wr, r);
|
return ModifiedRender(self, wr, r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user