diff --git a/OpenRA.Game/Graphics/WorldRenderer.cs b/OpenRA.Game/Graphics/WorldRenderer.cs index 5346d4a76f..bcd99599bb 100644 --- a/OpenRA.Game/Graphics/WorldRenderer.cs +++ b/OpenRA.Game/Graphics/WorldRenderer.cs @@ -99,10 +99,11 @@ namespace OpenRA.Graphics shroudRenderer.Draw( this ); Game.Renderer.DisableScissor(); - foreach (var a in world.Selection.Actors) - if (!a.Destroyed) - foreach (var t in a.TraitsImplementing()) - t.RenderAfterWorld(this); + foreach (var g in world.Selection.Actors.Where(a => !a.Destroyed) + .SelectMany(a => a.TraitsImplementing()) + .GroupBy(prs => prs.GetType())) + foreach (var t in g) + t.RenderAfterWorld(this); Game.Renderer.Flush(); }