Add depth buffer support to tactical overlays.

This commit is contained in:
Paul Chote
2016-08-22 21:37:35 +01:00
parent f3bac143e9
commit 3082c61e75
6 changed files with 30 additions and 21 deletions

View File

@@ -67,13 +67,13 @@ namespace OpenRA.Mods.Common.Graphics
public void Render(WorldRenderer wr)
{
var wcr = Game.Renderer.WorldRgbaColorRenderer;
var center = wr.ScreenPosition(centerPosition);
var center = wr.Screen3DPosition(centerPosition);
for (var i = 0; i < trailCount; i++)
{
var angle = trailAngle - new WAngle(i * (trailSeparation.Angle <= 512 ? 1 : -1));
var length = radius.Length * new WVec(angle.Cos(), angle.Sin(), 0) / 1024;
var end = wr.ScreenPosition(centerPosition + length);
var end = wr.Screen3DPosition(centerPosition + length);
var alpha = color.A - i * color.A / trailCount;
wcr.DrawLine(center, end, 3, Color.FromArgb(alpha, contrastColor));

View File

@@ -58,8 +58,8 @@ namespace OpenRA.Mods.Common.Graphics
var offset = new WVec(radius.Length, 0, 0);
for (var i = 0; i < RangeCircleSegments; i++)
{
var a = wr.ScreenPosition(centerPosition + offset.Rotate(RangeCircleStartRotations[i]));
var b = wr.ScreenPosition(centerPosition + offset.Rotate(RangeCircleEndRotations[i]));
var a = wr.Screen3DPosition(centerPosition + offset.Rotate(RangeCircleStartRotations[i]));
var b = wr.Screen3DPosition(centerPosition + offset.Rotate(RangeCircleEndRotations[i]));
if (contrastWidth > 0)
wcr.DrawLine(a, b, contrastWidth / wr.Viewport.Zoom, contrastColor);

View File

@@ -45,11 +45,11 @@ namespace OpenRA.Mods.Common.Graphics
public void Render(WorldRenderer wr)
{
var iz = 1 / wr.Viewport.Zoom;
var screenPos = wr.ScreenPxPosition(pos);
var screenPos = wr.Screen3DPxPosition(pos);
var tl = screenPos + new float2(visualBounds.Left, visualBounds.Top);
var br = screenPos + new float2(visualBounds.Right, visualBounds.Bottom);
var tr = new float2(br.X, tl.Y);
var bl = new float2(tl.X, br.Y);
var tr = new float3(br.X, tl.Y, screenPos.Z);
var bl = new float3(tl.X, br.Y, screenPos.Z);
var u = new float2(4 * iz, 0);
var v = new float2(0, 4 * iz);