diff --git a/OpenRA.Mods.Common/Traits/World/WarheadDebugOverlay.cs b/OpenRA.Mods.Common/Traits/World/WarheadDebugOverlay.cs index 1fcd99bca0..87c966d122 100644 --- a/OpenRA.Mods.Common/Traits/World/WarheadDebugOverlay.cs +++ b/OpenRA.Mods.Common/Traits/World/WarheadDebugOverlay.cs @@ -25,7 +25,7 @@ namespace OpenRA.Mods.Common.Traits public object Create(ActorInitializer init) { return new WarheadDebugOverlay(this); } } - public class WarheadDebugOverlay : IRenderAboveWorld + public class WarheadDebugOverlay : IRenderAboveShroud { class WHImpact { @@ -61,23 +61,18 @@ namespace OpenRA.Mods.Common.Traits impacts.Add(new WHImpact(pos, range, info.DisplayDuration, color)); } - void IRenderAboveWorld.RenderAboveWorld(Actor self, WorldRenderer wr) + IEnumerable IRenderAboveShroud.RenderAboveShroud(Actor self, WorldRenderer wr) { foreach (var i in impacts) { var alpha = 255.0f * i.Time / info.DisplayDuration; var rangeStep = alpha / i.Range.Length; - RangeCircleRenderable.DrawRangeCircle(wr, i.CenterPosition, i.OuterRange, - 1, Color.FromArgb((int)alpha, i.Color), 0, i.Color); + yield return new CircleAnnotationRenderable(i.CenterPosition, i.OuterRange, 1, Color.FromArgb((int)alpha, i.Color)); foreach (var r in i.Range) { - var tl = wr.Screen3DPosition(i.CenterPosition - new WVec(r.Length, r.Length, 0)); - var br = wr.Screen3DPosition(i.CenterPosition + new WVec(r.Length, r.Length, 0)); - - Game.Renderer.WorldRgbaColorRenderer.FillEllipse(tl, br, Color.FromArgb((int)alpha, i.Color)); - + yield return new CircleAnnotationRenderable(i.CenterPosition, r, 1, Color.FromArgb((int)alpha, i.Color), true); alpha -= rangeStep; } @@ -87,5 +82,7 @@ namespace OpenRA.Mods.Common.Traits impacts.RemoveAll(i => i.Time == 0); } + + bool IRenderAboveShroud.SpatiallyPartitionable { get { return false; } } } }