diff --git a/OpenRA.Game/Actor.cs b/OpenRA.Game/Actor.cs index 89d9a4c743..15d240380a 100644 --- a/OpenRA.Game/Actor.cs +++ b/OpenRA.Game/Actor.cs @@ -324,6 +324,7 @@ namespace OpenRA public IEnumerable GetAllTargetTypes() { + // PERF: Avoid LINQ. foreach (var targetable in Targetables) foreach (var targetType in targetable.TargetTypes) yield return targetType; @@ -331,6 +332,7 @@ namespace OpenRA public IEnumerable GetEnabledTargetTypes() { + // PERF: Avoid LINQ. foreach (var targetable in Targetables) if (targetable.IsTraitEnabled()) foreach (var targetType in targetable.TargetTypes) @@ -339,6 +341,7 @@ namespace OpenRA public bool IsTargetableBy(Actor byActor) { + // PERF: Avoid LINQ. foreach (var targetable in Targetables) if (targetable.IsTraitEnabled() && targetable.TargetableBy(this, byActor)) return true; diff --git a/OpenRA.Game/GameRules/WeaponInfo.cs b/OpenRA.Game/GameRules/WeaponInfo.cs index 8cfba690e6..16b6ff2548 100644 --- a/OpenRA.Game/GameRules/WeaponInfo.cs +++ b/OpenRA.Game/GameRules/WeaponInfo.cs @@ -132,6 +132,7 @@ namespace OpenRA.GameRules if (!IsValidTarget(targetTypes)) return false; + // PERF: Avoid LINQ. foreach (var warhead in Warheads) if (warhead.IsValidAgainst(victim, firedBy)) return true; diff --git a/OpenRA.Game/Player.cs b/OpenRA.Game/Player.cs index cc427806ac..1e21983465 100644 --- a/OpenRA.Game/Player.cs +++ b/OpenRA.Game/Player.cs @@ -159,6 +159,7 @@ namespace OpenRA public bool CanTargetActor(Actor a) { + // PERF: Avoid LINQ. if (HasFogVisibility) foreach (var fogVisibility in fogVisibilities) if (fogVisibility.IsVisible(a)) @@ -171,6 +172,7 @@ namespace OpenRA { get { + // PERF: Avoid LINQ. foreach (var fogVisibility in fogVisibilities) if (fogVisibility.HasFogVisibility()) return true; diff --git a/OpenRA.Game/Traits/Target.cs b/OpenRA.Game/Traits/Target.cs index 823daa3cbd..226d2cdd51 100644 --- a/OpenRA.Game/Traits/Target.cs +++ b/OpenRA.Game/Traits/Target.cs @@ -96,6 +96,7 @@ namespace OpenRA.Traits if (actor == null) return false; + // PERF: Avoid LINQ. var isTargetable = false; foreach (var targetable in actor.Targetables) { diff --git a/OpenRA.Mods.Common/Traits/Attack/AttackBase.cs b/OpenRA.Mods.Common/Traits/Attack/AttackBase.cs index 8e7fa78869..3580e2cacd 100644 --- a/OpenRA.Mods.Common/Traits/Attack/AttackBase.cs +++ b/OpenRA.Mods.Common/Traits/Attack/AttackBase.cs @@ -189,6 +189,7 @@ namespace OpenRA.Mods.Common.Traits if (Info.AttackRequiresEnteringCell && !positionable.Value.CanEnterCell(t.Actor.Location, null, false)) return false; + // PERF: Avoid LINQ. foreach (var armament in Armaments) if (armament.Weapon.IsValidAgainst(t, self.World, self)) return true; @@ -201,6 +202,7 @@ namespace OpenRA.Mods.Common.Traits if (IsTraitDisabled) return WDist.Zero; + // PERF: Avoid LINQ. var min = WDist.MaxValue; foreach (var armament in Armaments) { @@ -219,6 +221,7 @@ namespace OpenRA.Mods.Common.Traits if (IsTraitDisabled) return WDist.Zero; + // PERF: Avoid LINQ. var max = WDist.Zero; foreach (var armament in Armaments) {