From 6baa35a763aea067ecbfa82b93582cd25ca45c0d Mon Sep 17 00:00:00 2001 From: RoosterDragon Date: Mon, 23 Feb 2015 20:26:54 +0000 Subject: [PATCH] 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. --- .../Traits/Modifiers/DisabledOverlay.cs | 12 ++++++++++-- .../Traits/Modifiers/UpgradeOverlay.cs | 1 + 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/OpenRA.Mods.Common/Traits/Modifiers/DisabledOverlay.cs b/OpenRA.Mods.Common/Traits/Modifiers/DisabledOverlay.cs index 0827dccf94..dda9e1e883 100644 --- a/OpenRA.Mods.Common/Traits/Modifiers/DisabledOverlay.cs +++ b/OpenRA.Mods.Common/Traits/Modifiers/DisabledOverlay.cs @@ -21,11 +21,19 @@ namespace OpenRA.Mods.Common.Traits { public IEnumerable ModifyRender(Actor self, WorldRenderer wr, IEnumerable r) { - var disabled = self.IsDisabled(); + if (!self.IsDisabled()) + return r; + + return ModifiedRender(self, wr, r); + } + + IEnumerable ModifiedRender(Actor self, WorldRenderer wr, IEnumerable 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(); diff --git a/OpenRA.Mods.Common/Traits/Modifiers/UpgradeOverlay.cs b/OpenRA.Mods.Common/Traits/Modifiers/UpgradeOverlay.cs index fb6240d3af..f63ff61856 100644 --- a/OpenRA.Mods.Common/Traits/Modifiers/UpgradeOverlay.cs +++ b/OpenRA.Mods.Common/Traits/Modifiers/UpgradeOverlay.cs @@ -32,6 +32,7 @@ namespace OpenRA.Mods.Common.Traits { if (IsTraitDisabled) return r; + return ModifiedRender(self, wr, r); }