Convert WarheadDebugOverlay to IRenderAboveShroud.

This commit is contained in:
Paul Chote
2019-09-03 20:47:52 +01:00
committed by teinarss
parent 999ad0e18a
commit b3984c8db4

View File

@@ -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<IRenderable> 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; } }
}
}