Convert WarheadDebugOverlay to IRenderAboveShroud.
This commit is contained in:
@@ -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; } }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user