Avoid or reduce LINQ allocations required in various areas.

This commit is contained in:
RoosterDragon
2020-10-11 11:46:39 +01:00
committed by abcdefg30
parent da53d5b776
commit bb116034c7
9 changed files with 31 additions and 24 deletions

View File

@@ -9,6 +9,7 @@
*/
#endregion
using System.Collections.Generic;
using System.Linq;
using OpenRA.Traits;
@@ -29,7 +30,7 @@ namespace OpenRA.Mods.Common.Traits
{
readonly RevealsShroudInfo info;
readonly Shroud.SourceType type;
IRevealsShroudModifier[] rangeModifiers;
IEnumerable<int> rangeModifiers;
public RevealsShroud(Actor self, RevealsShroudInfo info)
: base(self, info)
@@ -43,7 +44,7 @@ namespace OpenRA.Mods.Common.Traits
{
base.Created(self);
rangeModifiers = self.TraitsImplementing<IRevealsShroudModifier>().ToArray();
rangeModifiers = self.TraitsImplementing<IRevealsShroudModifier>().ToArray().Select(x => x.GetRevealsShroudModifier());
}
protected override void AddCellsToPlayerShroud(Actor self, Player p, PPos[] uv)
@@ -63,8 +64,7 @@ namespace OpenRA.Mods.Common.Traits
if (CachedTraitDisabled)
return WDist.Zero;
var revealsShroudModifier = rangeModifiers.Select(x => x.GetRevealsShroudModifier());
var range = Util.ApplyPercentageModifiers(Info.Range.Length, revealsShroudModifier);
var range = Util.ApplyPercentageModifiers(Info.Range.Length, rangeModifiers);
return new WDist(range);
}
}