diff --git a/OpenRA.Game/Traits/Building.cs b/OpenRA.Game/Traits/Building.cs index 407f68e6d7..25fcf49e2b 100644 --- a/OpenRA.Game/Traits/Building.cs +++ b/OpenRA.Game/Traits/Building.cs @@ -164,8 +164,8 @@ namespace OpenRA.Traits public IEnumerable RadarSignatureCells(Actor self) { - foreach (var mod in self.World.Queries.WithTraitMultiple()) - if (!mod.Trait.VisibleOnRadar(self)) + foreach (var mod in self.traits.WithInterface()) + if (!mod.VisibleOnRadar(self)) return new int2[] {}; return Footprint.Tiles(self); @@ -173,8 +173,9 @@ namespace OpenRA.Traits public Color RadarSignatureColor(Actor self) { - foreach (var mod in self.World.Queries.WithTraitMultiple()) - return mod.Trait.RadarColorOverride(self); + var mod = self.traits.WithInterface().FirstOrDefault(); + if (mod != null) + return mod.RadarColorOverride(self); return self.Owner.Color; } diff --git a/OpenRA.Game/Traits/Unit.cs b/OpenRA.Game/Traits/Unit.cs index 444fd2c173..3b867b846c 100755 --- a/OpenRA.Game/Traits/Unit.cs +++ b/OpenRA.Game/Traits/Unit.cs @@ -39,17 +39,18 @@ namespace OpenRA.Traits public IEnumerable RadarSignatureCells(Actor self) { - foreach (var mod in self.World.Queries.WithTraitMultiple()) - if (!mod.Trait.VisibleOnRadar(self)) + foreach (var mod in self.traits.WithInterface()) + if (!mod.VisibleOnRadar(self)) yield break; - + yield return self.Location; } public Color RadarSignatureColor(Actor self) { - foreach (var mod in self.World.Queries.WithTraitMultiple()) - return mod.Trait.RadarColorOverride(self); + var mod = self.traits.WithInterface().FirstOrDefault(); + if (mod != null) + return mod.RadarColorOverride(self); return self.Owner.Color; }