diff --git a/OpenRA.Game/Graphics/SpriteRenderable.cs b/OpenRA.Game/Graphics/SpriteRenderable.cs index 30dceb76c3..d7a29929fc 100644 --- a/OpenRA.Game/Graphics/SpriteRenderable.cs +++ b/OpenRA.Game/Graphics/SpriteRenderable.cs @@ -64,8 +64,10 @@ namespace OpenRA.Graphics public void RenderDebugGeometry(WorldRenderer wr) { - var screenOffset = ScreenPosition(wr) + sprite.Offset; - Game.Renderer.WorldRgbaColorRenderer.DrawRect(screenOffset, screenOffset + sprite.Size, 1 / wr.Viewport.Zoom, Color.Red); + var pos = ScreenPosition(wr) + sprite.Offset; + var tl = wr.Viewport.WorldToViewPx(pos); + var br = wr.Viewport.WorldToViewPx(pos + sprite.Size); + Game.Renderer.RgbaColorRenderer.DrawRect(tl, br, 1, Color.Red); } public Rectangle ScreenBounds(WorldRenderer wr) diff --git a/OpenRA.Game/Graphics/TargetLineRenderable.cs b/OpenRA.Game/Graphics/TargetLineRenderable.cs index 5e8b6032bd..92f20de054 100644 --- a/OpenRA.Game/Graphics/TargetLineRenderable.cs +++ b/OpenRA.Game/Graphics/TargetLineRenderable.cs @@ -46,12 +46,11 @@ namespace OpenRA.Graphics if (!waypoints.Any()) return; - var sw = width / wr.Viewport.Zoom; - var first = wr.Screen3DPosition(waypoints.First()); + var first = wr.Viewport.WorldToViewPx(wr.Screen3DPosition(waypoints.First())); var a = first; - foreach (var b in waypoints.Skip(1).Select(pos => wr.Screen3DPosition(pos))) + foreach (var b in waypoints.Skip(1).Select(pos => wr.Viewport.WorldToViewPx(wr.Screen3DPosition(pos)))) { - Game.Renderer.WorldRgbaColorRenderer.DrawLine(a, b, sw, color); + Game.Renderer.RgbaColorRenderer.DrawLine(a, b, width, color); DrawTargetMarker(wr, color, b, markerSize); a = b; } @@ -59,13 +58,12 @@ namespace OpenRA.Graphics DrawTargetMarker(wr, color, first); } - public static void DrawTargetMarker(WorldRenderer wr, Color color, float3 location, int size = 1) + public static void DrawTargetMarker(WorldRenderer wr, Color color, int2 screenPos, int size = 1) { - var sw = size / wr.Viewport.Zoom; - var offset = new float2(sw, sw); - var tl = location - offset; - var br = location + offset; - Game.Renderer.WorldRgbaColorRenderer.FillRect(tl, br, color); + var offset = new int2(size, size); + var tl = screenPos - offset; + var br = screenPos + offset; + Game.Renderer.RgbaColorRenderer.FillRect(tl, br, color); } public void RenderDebugGeometry(WorldRenderer wr) { } diff --git a/OpenRA.Game/Graphics/Viewport.cs b/OpenRA.Game/Graphics/Viewport.cs index e562888085..99aa5359a2 100644 --- a/OpenRA.Game/Graphics/Viewport.cs +++ b/OpenRA.Game/Graphics/Viewport.cs @@ -211,6 +211,7 @@ namespace OpenRA.Graphics public int2 ViewToWorldPx(int2 view) { return (1f / Zoom * view.ToFloat2()).ToInt2() + TopLeft; } public int2 WorldToViewPx(int2 world) { return (Zoom * (world - TopLeft).ToFloat2()).ToInt2(); } + public int2 WorldToViewPx(float3 world) { return (Zoom * (world - TopLeft).XY).ToInt2(); } public void Center(IEnumerable actors) { diff --git a/OpenRA.Game/Graphics/WorldRenderer.cs b/OpenRA.Game/Graphics/WorldRenderer.cs index 100776a528..7140cf12b1 100644 --- a/OpenRA.Game/Graphics/WorldRenderer.cs +++ b/OpenRA.Game/Graphics/WorldRenderer.cs @@ -247,39 +247,39 @@ namespace OpenRA.Graphics foreach (var r in g) r.Render(this); - if (debugVis.Value != null && debugVis.Value.RenderGeometry) - { - for (var i = 0; i < preparedRenderables.Count; i++) - preparedRenderables[i].RenderDebugGeometry(this); - - foreach (var g in groupedOverlayRenderables) - foreach (var r in g) - r.RenderDebugGeometry(this); - } - - if (debugVis.Value != null && debugVis.Value.ScreenMap) - { - foreach (var r in World.ScreenMap.RenderBounds(World.RenderPlayer)) - Game.Renderer.WorldRgbaColorRenderer.DrawRect( - new float3(r.Left, r.Top, r.Bottom), - new float3(r.Right, r.Bottom, r.Bottom), - 1 / Viewport.Zoom, Color.MediumSpringGreen); - - foreach (var r in World.ScreenMap.MouseBounds(World.RenderPlayer)) - Game.Renderer.WorldRgbaColorRenderer.DrawRect( - new float3(r.Left, r.Top, r.Bottom), - new float3(r.Right, r.Bottom, r.Bottom), - 1 / Viewport.Zoom, Color.OrangeRed); - } - Game.Renderer.Flush(); for (var i = 0; i < preparedAnnotationRenderables.Count; i++) preparedAnnotationRenderables[i].Render(this); if (debugVis.Value != null && debugVis.Value.RenderGeometry) + { + for (var i = 0; i < preparedRenderables.Count; i++) + preparedRenderables[i].RenderDebugGeometry(this); + + for (var i = 0; i < preparedOverlayRenderables.Count; i++) + preparedOverlayRenderables[i].RenderDebugGeometry(this); + for (var i = 0; i < preparedAnnotationRenderables.Count; i++) preparedAnnotationRenderables[i].RenderDebugGeometry(this); + } + + if (debugVis.Value != null && debugVis.Value.ScreenMap) + { + foreach (var r in World.ScreenMap.RenderBounds(World.RenderPlayer)) + { + var tl = Viewport.WorldToViewPx(new float2(r.Left, r.Top)); + var br = Viewport.WorldToViewPx(new float2(r.Right, r.Bottom)); + Game.Renderer.RgbaColorRenderer.DrawRect(tl, br, 1, Color.MediumSpringGreen); + } + + foreach (var r in World.ScreenMap.MouseBounds(World.RenderPlayer)) + { + var tl = Viewport.WorldToViewPx(new float2(r.Left, r.Top)); + var br = Viewport.WorldToViewPx(new float2(r.Right, r.Bottom)); + Game.Renderer.RgbaColorRenderer.DrawRect(tl, br, 1, Color.OrangeRed); + } + } Game.Renderer.Flush(); preparedRenderables.Clear(); diff --git a/OpenRA.Mods.Common/Effects/FloatingText.cs b/OpenRA.Mods.Common/Effects/FloatingText.cs index d153db18a0..f9e6161119 100644 --- a/OpenRA.Mods.Common/Effects/FloatingText.cs +++ b/OpenRA.Mods.Common/Effects/FloatingText.cs @@ -52,8 +52,7 @@ namespace OpenRA.Mods.Common.Effects if (wr.World.FogObscures(pos) || wr.World.ShroudObscures(pos)) yield break; - // Arbitrary large value used for the z-offset to try and ensure the text displays above everything else. - yield return new TextRenderable(font, pos, 4096, color, text); + yield return new TextRenderable(font, pos, 0, color, text); } public static string FormatCashTick(int cashAmount) diff --git a/OpenRA.Mods.Common/Graphics/CircleAnnotationRenderable.cs b/OpenRA.Mods.Common/Graphics/CircleAnnotationRenderable.cs index fa30c35f5a..55fc331264 100644 --- a/OpenRA.Mods.Common/Graphics/CircleAnnotationRenderable.cs +++ b/OpenRA.Mods.Common/Graphics/CircleAnnotationRenderable.cs @@ -47,23 +47,23 @@ namespace OpenRA.Mods.Common.Graphics public IFinalizedRenderable PrepareRender(WorldRenderer wr) { return this; } public void Render(WorldRenderer wr) { - var wcr = Game.Renderer.WorldRgbaColorRenderer; + var cr = Game.Renderer.RgbaColorRenderer; if (filled) { var offset = new WVec(radius.Length, radius.Length, 0); - var tl = wr.Screen3DPosition(centerPosition - offset); - var br = wr.Screen3DPosition(centerPosition + offset); + var tl = wr.Viewport.WorldToViewPx(wr.ScreenPosition(centerPosition - offset)); + var br = wr.Viewport.WorldToViewPx(wr.ScreenPosition(centerPosition + offset)); - wcr.FillEllipse(tl, br, color); + cr.FillEllipse(tl, br, color); } else { var r = radius.Length; - var a = wr.Screen3DPosition(centerPosition + r * FacingOffsets[CircleSegments - 1] / 1024); + var a = wr.Viewport.WorldToViewPx(wr.ScreenPosition(centerPosition + r * FacingOffsets[CircleSegments - 1] / 1024)); for (var i = 0; i < CircleSegments; i++) { - var b = wr.Screen3DPosition(centerPosition + r * FacingOffsets[i] / 1024); - wcr.DrawLine(a, b, width / wr.Viewport.Zoom, color); + var b = wr.Viewport.WorldToViewPx(wr.ScreenPosition(centerPosition + r * FacingOffsets[i] / 1024)); + cr.DrawLine(a, b, width, color); a = b; } } diff --git a/OpenRA.Mods.Common/Graphics/LineAnnotationRenderable.cs b/OpenRA.Mods.Common/Graphics/LineAnnotationRenderable.cs index f97296e8ee..f625bc4056 100644 --- a/OpenRA.Mods.Common/Graphics/LineAnnotationRenderable.cs +++ b/OpenRA.Mods.Common/Graphics/LineAnnotationRenderable.cs @@ -52,7 +52,10 @@ namespace OpenRA.Mods.Common.Graphics public IFinalizedRenderable PrepareRender(WorldRenderer wr) { return this; } public void Render(WorldRenderer wr) { - Game.Renderer.WorldRgbaColorRenderer.DrawLine(wr.Screen3DPosition(start), wr.Screen3DPosition(end), width / wr.Viewport.Zoom, startColor, endColor); + Game.Renderer.RgbaColorRenderer.DrawLine( + wr.Viewport.WorldToViewPx(wr.ScreenPosition(start)), + wr.Viewport.WorldToViewPx(wr.Screen3DPosition(end)), + width, startColor, endColor); } public void RenderDebugGeometry(WorldRenderer wr) { } diff --git a/OpenRA.Mods.Common/Graphics/PolygonAnnotationRenderable.cs b/OpenRA.Mods.Common/Graphics/PolygonAnnotationRenderable.cs index 62e24ab00e..5789e26cf3 100644 --- a/OpenRA.Mods.Common/Graphics/PolygonAnnotationRenderable.cs +++ b/OpenRA.Mods.Common/Graphics/PolygonAnnotationRenderable.cs @@ -43,8 +43,8 @@ namespace OpenRA.Mods.Common.Graphics public IFinalizedRenderable PrepareRender(WorldRenderer wr) { return this; } public void Render(WorldRenderer wr) { - var verts = vertices.Select(wr.Screen3DPosition).ToArray(); - Game.Renderer.WorldRgbaColorRenderer.DrawPolygon(verts, width / wr.Viewport.Zoom, color); + var verts = vertices.Select(v => wr.Viewport.WorldToViewPx(wr.ScreenPosition(v)).ToFloat2()).ToArray(); + Game.Renderer.RgbaColorRenderer.DrawPolygon(verts, width, color); } public void RenderDebugGeometry(WorldRenderer wr) { } diff --git a/OpenRA.Mods.Common/Graphics/RangeCircleRenderable.cs b/OpenRA.Mods.Common/Graphics/RangeCircleRenderable.cs index ff7e1483b8..706f3c9820 100644 --- a/OpenRA.Mods.Common/Graphics/RangeCircleRenderable.cs +++ b/OpenRA.Mods.Common/Graphics/RangeCircleRenderable.cs @@ -54,18 +54,18 @@ namespace OpenRA.Mods.Common.Graphics public static void DrawRangeCircle(WorldRenderer wr, WPos centerPosition, WDist radius, float width, Color color, float contrastWidth, Color contrastColor) { - var wcr = Game.Renderer.WorldRgbaColorRenderer; + var cr = Game.Renderer.RgbaColorRenderer; var offset = new WVec(radius.Length, 0, 0); for (var i = 0; i < RangeCircleSegments; i++) { - var a = wr.Screen3DPosition(centerPosition + offset.Rotate(ref RangeCircleStartRotations[i])); - var b = wr.Screen3DPosition(centerPosition + offset.Rotate(ref RangeCircleEndRotations[i])); + var a = wr.Viewport.WorldToViewPx(wr.ScreenPosition(centerPosition + offset.Rotate(ref RangeCircleStartRotations[i]))); + var b = wr.Viewport.WorldToViewPx(wr.ScreenPosition(centerPosition + offset.Rotate(ref RangeCircleEndRotations[i]))); if (contrastWidth > 0) - wcr.DrawLine(a, b, contrastWidth / wr.Viewport.Zoom, contrastColor); + cr.DrawLine(a, b, contrastWidth, contrastColor); if (width > 0) - wcr.DrawLine(a, b, width / wr.Viewport.Zoom, color); + cr.DrawLine(a, b, width, color); } } diff --git a/OpenRA.Mods.Common/Graphics/SelectionBarsRenderable.cs b/OpenRA.Mods.Common/Graphics/SelectionBarsRenderable.cs index 11ea044d77..4fe7fe80ba 100644 --- a/OpenRA.Mods.Common/Graphics/SelectionBarsRenderable.cs +++ b/OpenRA.Mods.Common/Graphics/SelectionBarsRenderable.cs @@ -51,14 +51,14 @@ namespace OpenRA.Mods.Common.Graphics public IRenderable OffsetBy(WVec vec) { return new SelectionBarsRenderable(pos + vec, actor, decorationBounds); } public IRenderable AsDecoration() { return this; } - void DrawExtraBars(WorldRenderer wr, float3 start, float3 end) + void DrawExtraBars(WorldRenderer wr, float2 start, float2 end) { foreach (var extraBar in actor.TraitsImplementing()) { var value = extraBar.GetValue(); if (value != 0 || extraBar.DisplayWhenEmpty) { - var offset = new float3(0, (int)(4 / wr.Viewport.Zoom), 0); + var offset = new float2(0, 4); start += offset; end += offset; DrawSelectionBar(wr, start, end, extraBar.GetValue(), extraBar.GetColor()); @@ -66,48 +66,46 @@ namespace OpenRA.Mods.Common.Graphics } } - void DrawSelectionBar(WorldRenderer wr, float3 start, float3 end, float value, Color barColor) + void DrawSelectionBar(WorldRenderer wr, float2 start, float2 end, float value, Color barColor) { - var iz = 1 / wr.Viewport.Zoom; var c = Color.FromArgb(128, 30, 30, 30); var c2 = Color.FromArgb(128, 10, 10, 10); - var p = new float2(0, -4 * iz); - var q = new float2(0, -3 * iz); - var r = new float2(0, -2 * iz); + var p = new float2(0, -4); + var q = new float2(0, -3); + var r = new float2(0, -2); var barColor2 = Color.FromArgb(255, barColor.R / 2, barColor.G / 2, barColor.B / 2); var z = float3.Lerp(start, end, value); - var wcr = Game.Renderer.WorldRgbaColorRenderer; - wcr.DrawLine(start + p, end + p, iz, c); - wcr.DrawLine(start + q, end + q, iz, c2); - wcr.DrawLine(start + r, end + r, iz, c); + var cr = Game.Renderer.RgbaColorRenderer; + cr.DrawLine(start + p, end + p, 1, c); + cr.DrawLine(start + q, end + q, 1, c2); + cr.DrawLine(start + r, end + r, 1, c); - wcr.DrawLine(start + p, z + p, iz, barColor2); - wcr.DrawLine(start + q, z + q, iz, barColor); - wcr.DrawLine(start + r, z + r, iz, barColor2); + cr.DrawLine(start + p, z + p, 1, barColor2); + cr.DrawLine(start + q, z + q, 1, barColor); + cr.DrawLine(start + r, z + r, 1, barColor2); } Color GetHealthColor(IHealth health) { if (Game.Settings.Game.UsePlayerStanceColors) return actor.Owner.PlayerStanceColor(actor); - else - return health.DamageState == DamageState.Critical ? Color.Red : - health.DamageState == DamageState.Heavy ? Color.Yellow : Color.LimeGreen; + + return health.DamageState == DamageState.Critical ? Color.Red : + health.DamageState == DamageState.Heavy ? Color.Yellow : Color.LimeGreen; } - void DrawHealthBar(WorldRenderer wr, IHealth health, float3 start, float3 end) + void DrawHealthBar(WorldRenderer wr, IHealth health, float2 start, float2 end) { if (health == null || health.IsDead) return; var c = Color.FromArgb(128, 30, 30, 30); var c2 = Color.FromArgb(128, 10, 10, 10); - var iz = 1 / wr.Viewport.Zoom; - var p = new float2(0, -4 * iz); - var q = new float2(0, -3 * iz); - var r = new float2(0, -2 * iz); + var p = new float2(0, -4); + var q = new float2(0, -3); + var r = new float2(0, -2); var healthColor = GetHealthColor(health); var healthColor2 = Color.FromArgb( @@ -118,14 +116,14 @@ namespace OpenRA.Mods.Common.Graphics var z = float3.Lerp(start, end, (float)health.HP / health.MaxHP); - var wcr = Game.Renderer.WorldRgbaColorRenderer; - wcr.DrawLine(start + p, end + p, iz, c); - wcr.DrawLine(start + q, end + q, iz, c2); - wcr.DrawLine(start + r, end + r, iz, c); + var cr = Game.Renderer.RgbaColorRenderer; + cr.DrawLine(start + p, end + p, 1, c); + cr.DrawLine(start + q, end + q, 1, c2); + cr.DrawLine(start + r, end + r, 1, c); - wcr.DrawLine(start + p, z + p, iz, healthColor2); - wcr.DrawLine(start + q, z + q, iz, healthColor); - wcr.DrawLine(start + r, z + r, iz, healthColor2); + cr.DrawLine(start + p, z + p, 1, healthColor2); + cr.DrawLine(start + q, z + q, 1, healthColor); + cr.DrawLine(start + r, z + r, 1, healthColor2); if (health.DisplayHP != health.HP) { @@ -137,9 +135,9 @@ namespace OpenRA.Mods.Common.Graphics deltaColor.B / 2); var zz = float3.Lerp(start, end, (float)health.DisplayHP / health.MaxHP); - wcr.DrawLine(z + p, zz + p, iz, deltaColor2); - wcr.DrawLine(z + q, zz + q, iz, deltaColor); - wcr.DrawLine(z + r, zz + r, iz, deltaColor2); + cr.DrawLine(z + p, zz + p, 1, deltaColor2); + cr.DrawLine(z + q, zz + q, 1, deltaColor); + cr.DrawLine(z + r, zz + r, 1, deltaColor2); } } @@ -150,10 +148,8 @@ namespace OpenRA.Mods.Common.Graphics return; var health = actor.TraitOrDefault(); - - var screenPos = wr.Screen3DPxPosition(pos); - var start = new float3(decorationBounds.Left + 1, decorationBounds.Top, screenPos.Z); - var end = new float3(decorationBounds.Right - 1, decorationBounds.Top, screenPos.Z); + var start = wr.Viewport.WorldToViewPx(new float2(decorationBounds.Left + 1, decorationBounds.Top)); + var end = wr.Viewport.WorldToViewPx(new float2(decorationBounds.Right - 1, decorationBounds.Top)); if (DisplayHealth) DrawHealthBar(wr, health, start, end); diff --git a/OpenRA.Mods.Common/Graphics/SelectionBoxRenderable.cs b/OpenRA.Mods.Common/Graphics/SelectionBoxRenderable.cs index 096d8a0cd9..06709608bb 100644 --- a/OpenRA.Mods.Common/Graphics/SelectionBoxRenderable.cs +++ b/OpenRA.Mods.Common/Graphics/SelectionBoxRenderable.cs @@ -44,20 +44,18 @@ namespace OpenRA.Mods.Common.Graphics public IFinalizedRenderable PrepareRender(WorldRenderer wr) { return this; } public void Render(WorldRenderer wr) { - var iz = 1 / wr.Viewport.Zoom; - var screenDepth = wr.Screen3DPxPosition(pos).Z; - var tl = new float3(decorationBounds.Left, decorationBounds.Top, screenDepth); - var br = new float3(decorationBounds.Right, decorationBounds.Bottom, screenDepth); - var tr = new float3(br.X, tl.Y, screenDepth); - var bl = new float3(tl.X, br.Y, screenDepth); - var u = new float2(4 * iz, 0); - var v = new float2(0, 4 * iz); + var tl = wr.Viewport.WorldToViewPx(new float2(decorationBounds.Left, decorationBounds.Top)).ToFloat2(); + var br = wr.Viewport.WorldToViewPx(new float2(decorationBounds.Right, decorationBounds.Bottom)).ToFloat2(); + var tr = new float2(br.X, tl.Y); + var bl = new float2(tl.X, br.Y); + var u = new float2(4, 0); + var v = new float2(0, 4); - var wcr = Game.Renderer.WorldRgbaColorRenderer; - wcr.DrawLine(new[] { tl + u, tl, tl + v }, iz, color, true); - wcr.DrawLine(new[] { tr - u, tr, tr + v }, iz, color, true); - wcr.DrawLine(new[] { br - u, br, br - v }, iz, color, true); - wcr.DrawLine(new[] { bl + u, bl, bl - v }, iz, color, true); + var cr = Game.Renderer.RgbaColorRenderer; + cr.DrawLine(new float3[] { tl + u, tl, tl + v }, 1, color, true); + cr.DrawLine(new float3[] { tr - u, tr, tr + v }, 1, color, true); + cr.DrawLine(new float3[] { br - u, br, br - v }, 1, color, true); + cr.DrawLine(new float3[] { bl + u, bl, bl - v }, 1, color, true); } public void RenderDebugGeometry(WorldRenderer wr) { } diff --git a/OpenRA.Mods.Common/Graphics/TextRenderable.cs b/OpenRA.Mods.Common/Graphics/TextRenderable.cs index d816877c31..19a36dac4f 100644 --- a/OpenRA.Mods.Common/Graphics/TextRenderable.cs +++ b/OpenRA.Mods.Common/Graphics/TextRenderable.cs @@ -56,16 +56,15 @@ namespace OpenRA.Mods.Common.Graphics public IFinalizedRenderable PrepareRender(WorldRenderer wr) { return this; } public void Render(WorldRenderer wr) { - var screenPos = wr.Viewport.Zoom * (wr.ScreenPosition(pos) - wr.Viewport.TopLeft.ToFloat2()) - 0.5f * font.Measure(text).ToFloat2(); - var screenPxPos = new float2((float)Math.Round(screenPos.X), (float)Math.Round(screenPos.Y)); - font.DrawTextWithContrast(text, screenPxPos, color, bgDark, bgLight, 1); + var screenPos = wr.Viewport.WorldToViewPx(wr.ScreenPosition(pos)) - 0.5f * font.Measure(text).ToFloat2(); + font.DrawTextWithContrast(text, screenPos, color, bgDark, bgLight, 1); } public void RenderDebugGeometry(WorldRenderer wr) { var size = font.Measure(text).ToFloat2(); - var offset = wr.Screen3DPxPosition(pos) - 0.5f * size; - Game.Renderer.WorldRgbaColorRenderer.DrawRect(offset, offset + size, 1 / wr.Viewport.Zoom, Color.Red); + var screenPos = wr.Viewport.WorldToViewPx(wr.ScreenPosition(pos)); + Game.Renderer.RgbaColorRenderer.DrawRect(screenPos - 0.5f * size, screenPos + 0.5f * size, 1, Color.Red); } public Rectangle ScreenBounds(WorldRenderer wr) { return Rectangle.Empty; } diff --git a/OpenRA.Mods.Common/Widgets/WorldInteractionControllerWidget.cs b/OpenRA.Mods.Common/Widgets/WorldInteractionControllerWidget.cs index 5ba9d8f894..daea81c865 100644 --- a/OpenRA.Mods.Common/Widgets/WorldInteractionControllerWidget.cs +++ b/OpenRA.Mods.Common/Widgets/WorldInteractionControllerWidget.cs @@ -59,11 +59,11 @@ namespace OpenRA.Mods.Common.Widgets var modifiers = Game.GetModifierKeys(); if (IsValidDragbox) { + var a = worldRenderer.Viewport.WorldToViewPx(dragStart); + var b = worldRenderer.Viewport.WorldToViewPx(mousePos); + Game.Renderer.RgbaColorRenderer.DrawRect(a, b, 1, Color.White); + // Render actors in the dragbox - var a = new float3(dragStart.X, dragStart.Y, dragStart.Y); - var b = new float3(mousePos.X, mousePos.Y, mousePos.Y); - Game.Renderer.WorldRgbaColorRenderer.DrawRect(a, b, - 1 / worldRenderer.Viewport.Zoom, Color.White); foreach (var u in SelectActorsInBoxWithDeadzone(World, dragStart, mousePos, modifiers)) DrawRollover(u); }