AtmosDebugOverlay fixes (#5099)

This commit is contained in:
metalgearsloth
2021-11-01 00:40:57 +11:00
committed by GitHub
parent bec6799442
commit 569e75b987
2 changed files with 16 additions and 15 deletions

View File

@@ -62,8 +62,8 @@ namespace Content.Client.Atmos.EntitySystems
base.Shutdown(); base.Shutdown();
_mapManager.OnGridRemoved -= OnGridRemoved; _mapManager.OnGridRemoved -= OnGridRemoved;
var overlayManager = IoCManager.Resolve<IOverlayManager>(); var overlayManager = IoCManager.Resolve<IOverlayManager>();
if(!overlayManager.HasOverlay<GasTileOverlay>()) if (overlayManager.HasOverlay<AtmosDebugOverlay>())
overlayManager.RemoveOverlay<GasTileOverlay>(); overlayManager.RemoveOverlay<AtmosDebugOverlay>();
} }
public void Reset(RoundRestartCleanupEvent ev) public void Reset(RoundRestartCleanupEvent ev)

View File

@@ -32,10 +32,7 @@ namespace Content.Client.Atmos.Overlays
var drawHandle = args.WorldHandle; var drawHandle = args.WorldHandle;
var mapId = _eyeManager.CurrentMap; var mapId = _eyeManager.CurrentMap;
var eye = _eyeManager.CurrentEye; var worldBounds = _eyeManager.GetWorldViewbounds();
var worldBounds = Box2.CenteredAround(eye.Position.Position,
_clyde.ScreenSize / (float) EyeManager.PixelsPerMeter * eye.Zoom);
// IF YOU ARE ABOUT TO INTRODUCE CHUNKING OR SOME OTHER OPTIMIZATION INTO THIS CODE: // IF YOU ARE ABOUT TO INTRODUCE CHUNKING OR SOME OTHER OPTIMIZATION INTO THIS CODE:
// -- THINK! -- // -- THINK! --
@@ -49,6 +46,8 @@ namespace Content.Client.Atmos.Overlays
if (!_atmosDebugOverlaySystem.HasData(mapGrid.Index)) if (!_atmosDebugOverlaySystem.HasData(mapGrid.Index))
continue; continue;
drawHandle.SetTransform(mapGrid.WorldMatrix);
for (var pass = 0; pass < 2; pass++) for (var pass = 0; pass < 2; pass++)
{ {
foreach (var tile in mapGrid.GetTilesIntersecting(worldBounds)) foreach (var tile in mapGrid.GetTilesIntersecting(worldBounds))
@@ -95,7 +94,7 @@ namespace Content.Client.Atmos.Overlays
} }
} }
res = res.WithAlpha(0.75f); res = res.WithAlpha(0.75f);
drawHandle.DrawRect(Box2.FromDimensions(mapGrid.LocalToWorld(new Vector2(tile.X, tile.Y)), new Vector2(1, 1)), res); drawHandle.DrawRect(Box2.FromDimensions(new Vector2(tile.X, tile.Y), new Vector2(1, 1)), res);
} }
else if (pass == 1) else if (pass == 1)
{ {
@@ -109,8 +108,8 @@ namespace Content.Client.Atmos.Overlays
var atmosAngleOfs = atmosAngle.ToVec() * 0.45f; var atmosAngleOfs = atmosAngle.ToVec() * 0.45f;
var atmosAngleOfsR90 = new Vector2(atmosAngleOfs.Y, -atmosAngleOfs.X); var atmosAngleOfsR90 = new Vector2(atmosAngleOfs.Y, -atmosAngleOfs.X);
var tileCentre = new Vector2(tile.X + 0.5f, tile.Y + 0.5f); var tileCentre = new Vector2(tile.X + 0.5f, tile.Y + 0.5f);
var basisA = mapGrid.LocalToWorld(tileCentre + atmosAngleOfs - atmosAngleOfsR90); var basisA = tileCentre + atmosAngleOfs - atmosAngleOfsR90;
var basisB = mapGrid.LocalToWorld(tileCentre + atmosAngleOfs + atmosAngleOfsR90); var basisB = tileCentre + atmosAngleOfs + atmosAngleOfsR90;
drawHandle.DrawLine(basisA, basisB, Color.Azure); drawHandle.DrawLine(basisA, basisB, Color.Azure);
} }
} }
@@ -125,18 +124,18 @@ namespace Content.Client.Atmos.Overlays
var atmosAngle = data.PressureDirection.ToAngle() - Angle.FromDegrees(90); var atmosAngle = data.PressureDirection.ToAngle() - Angle.FromDegrees(90);
var atmosAngleOfs = atmosAngle.ToVec() * 0.4f; var atmosAngleOfs = atmosAngle.ToVec() * 0.4f;
var tileCentre = new Vector2(tile.X + 0.5f, tile.Y + 0.5f); var tileCentre = new Vector2(tile.X + 0.5f, tile.Y + 0.5f);
var basisA = mapGrid.LocalToWorld(tileCentre); var basisA = tileCentre;
var basisB = mapGrid.LocalToWorld(tileCentre + atmosAngleOfs); var basisB = tileCentre + atmosAngleOfs;
drawHandle.DrawLine(basisA, basisB, Color.Blue); drawHandle.DrawLine(basisA, basisB, Color.Blue);
} }
// -- Excited Groups -- // -- Excited Groups --
if (data.InExcitedGroup) if (data.InExcitedGroup)
{ {
var tilePos = new Vector2(tile.X, tile.Y); var tilePos = new Vector2(tile.X, tile.Y);
var basisA = mapGrid.LocalToWorld(tilePos); var basisA = tilePos;
var basisB = mapGrid.LocalToWorld(tilePos + new Vector2(1.0f, 1.0f)); var basisB = tilePos + new Vector2(1.0f, 1.0f);
var basisC = mapGrid.LocalToWorld(tilePos + new Vector2(0.0f, 1.0f)); var basisC = tilePos + new Vector2(0.0f, 1.0f);
var basisD = mapGrid.LocalToWorld(tilePos + new Vector2(1.0f, 0.0f)); var basisD = tilePos + new Vector2(1.0f, 0.0f);
drawHandle.DrawLine(basisA, basisB, Color.Cyan); drawHandle.DrawLine(basisA, basisB, Color.Cyan);
drawHandle.DrawLine(basisC, basisD, Color.Cyan); drawHandle.DrawLine(basisC, basisD, Color.Cyan);
} }
@@ -145,6 +144,8 @@ namespace Content.Client.Atmos.Overlays
} }
} }
} }
drawHandle.SetTransform(Matrix3.Identity);
} }
} }
} }