From 8bd386dcb0586908f754f5dad439f5915d46c2a2 Mon Sep 17 00:00:00 2001 From: E F R <602406+Efruit@users.noreply.github.com> Date: Fri, 10 Dec 2021 05:47:21 +0000 Subject: [PATCH] Overlays: Avoid using `IEyeManager` whenever possible (#5709) --- .../Administration/AdminNameOverlay.cs | 23 ++++++++++++------- .../Administration/AdminSystem.Menu.cs | 1 - .../Administration/AdminSystem.Overlay.cs | 2 +- .../Atmos/Overlays/AtmosDebugOverlay.cs | 5 ++-- .../Atmos/Overlays/GasTileOverlay.cs | 5 ++-- .../CombatMode/ColoredScreenBorderOverlay.cs | 3 +-- .../MobState/Overlays/CircleMaskOverlay.cs | 3 +-- .../MobState/Overlays/CritOverlay.cs | 3 +-- .../NodeContainer/NodeGroupSystem.cs | 2 -- .../NodeContainer/NodeVisualizationOverlay.cs | 16 ++++++------- .../Singularity/SingularityOverlay.cs | 3 +-- .../Suspicion/SuspicionRoleComponent.cs | 3 +-- Content.Client/Suspicion/TraitorOverlay.cs | 12 +++++----- 13 files changed, 39 insertions(+), 42 deletions(-) diff --git a/Content.Client/Administration/AdminNameOverlay.cs b/Content.Client/Administration/AdminNameOverlay.cs index 6cc37a3028..16565b6278 100644 --- a/Content.Client/Administration/AdminNameOverlay.cs +++ b/Content.Client/Administration/AdminNameOverlay.cs @@ -11,15 +11,13 @@ namespace Content.Client.Administration { private readonly AdminSystem _system; private readonly IEntityManager _entityManager; - private readonly IEyeManager _eyeManager; private readonly IEntityLookup _entityLookup; private readonly Font _font; - public AdminNameOverlay(AdminSystem system, IEntityManager entityManager, IEyeManager eyeManager, IResourceCache resourceCache, IEntityLookup entityLookup) + public AdminNameOverlay(AdminSystem system, IEntityManager entityManager, IResourceCache resourceCache, IEntityLookup entityLookup) { _system = system; _entityManager = entityManager; - _eyeManager = eyeManager; _entityLookup = entityLookup; ZIndex = 200; _font = new VectorFont(resourceCache.GetResource("/Fonts/NotoSans/NotoSans-Regular.ttf"), 10); @@ -29,7 +27,7 @@ namespace Content.Client.Administration protected override void Draw(in OverlayDrawArgs args) { - var viewport = _eyeManager.GetWorldViewport(); + var viewport = args.WorldAABB; foreach (var playerInfo in _system.PlayerList) { @@ -41,7 +39,10 @@ namespace Content.Client.Administration } // if not on the same map, continue - if (IoCManager.Resolve().GetComponent(entity).MapID != _eyeManager.CurrentMap) + if (IoCManager + .Resolve() + .GetComponent(entity) + .MapID != args.Viewport.Eye!.Position.MapId) { continue; } @@ -55,9 +56,15 @@ namespace Content.Client.Administration } var lineoffset = new Vector2(0f, 11f); - var screenCoordinates = _eyeManager.WorldToScreen(aabb.Center + - new Angle(-_eyeManager.CurrentEye.Rotation).RotateVec( - aabb.TopRight - aabb.Center)) + new Vector2(1f, 7f); + var screenCoordinates = args + .ViewportControl! + .WorldToScreen( + aabb.Center + + new Angle(-args.Viewport.Eye!.Rotation) + .RotateVec(aabb.TopRight - aabb.Center) + ) + + new Vector2(1f, 7f); + if (playerInfo.Antag) { args.ScreenHandle.DrawString(_font, screenCoordinates + (lineoffset * 2), "ANTAG", Color.OrangeRed); diff --git a/Content.Client/Administration/AdminSystem.Menu.cs b/Content.Client/Administration/AdminSystem.Menu.cs index a2cc51b9a3..9fb4d3082f 100644 --- a/Content.Client/Administration/AdminSystem.Menu.cs +++ b/Content.Client/Administration/AdminSystem.Menu.cs @@ -23,7 +23,6 @@ namespace Content.Client.Administration [Dependency] private readonly IClientAdminManager _clientAdminManager = default!; [Dependency] private readonly IClientConGroupController _clientConGroupController = default!; [Dependency] private readonly IOverlayManager _overlayManager = default!; - [Dependency] private readonly IEyeManager _eyeManager = default!; [Dependency] private readonly IResourceCache _resourceCache = default!; [Dependency] private readonly IEntityManager _entityManager = default!; [Dependency] private readonly IEntityLookup _entityLookup = default!; diff --git a/Content.Client/Administration/AdminSystem.Overlay.cs b/Content.Client/Administration/AdminSystem.Overlay.cs index 8a9a0ffb7c..4487844dcb 100644 --- a/Content.Client/Administration/AdminSystem.Overlay.cs +++ b/Content.Client/Administration/AdminSystem.Overlay.cs @@ -11,7 +11,7 @@ namespace Content.Client.Administration private void InitializeOverlay() { - _adminNameOverlay = new AdminNameOverlay(this, _entityManager, _eyeManager, _resourceCache, _entityLookup); + _adminNameOverlay = new AdminNameOverlay(this, _entityManager, _resourceCache, _entityLookup); _adminManager.AdminStatusUpdated += OnAdminStatusUpdated; } diff --git a/Content.Client/Atmos/Overlays/AtmosDebugOverlay.cs b/Content.Client/Atmos/Overlays/AtmosDebugOverlay.cs index c61b975dfd..e73e5a065b 100644 --- a/Content.Client/Atmos/Overlays/AtmosDebugOverlay.cs +++ b/Content.Client/Atmos/Overlays/AtmosDebugOverlay.cs @@ -15,7 +15,6 @@ namespace Content.Client.Atmos.Overlays private readonly AtmosDebugOverlaySystem _atmosDebugOverlaySystem; [Dependency] private readonly IMapManager _mapManager = default!; - [Dependency] private readonly IEyeManager _eyeManager = default!; public override OverlaySpace Space => OverlaySpace.WorldSpace; @@ -30,8 +29,8 @@ namespace Content.Client.Atmos.Overlays { var drawHandle = args.WorldHandle; - var mapId = _eyeManager.CurrentMap; - var worldBounds = _eyeManager.GetWorldViewbounds(); + var mapId = args.Viewport.Eye!.Position.MapId; + var worldBounds = args.WorldBounds; // IF YOU ARE ABOUT TO INTRODUCE CHUNKING OR SOME OTHER OPTIMIZATION INTO THIS CODE: // -- THINK! -- diff --git a/Content.Client/Atmos/Overlays/GasTileOverlay.cs b/Content.Client/Atmos/Overlays/GasTileOverlay.cs index 3b610267f5..3cfddcd114 100644 --- a/Content.Client/Atmos/Overlays/GasTileOverlay.cs +++ b/Content.Client/Atmos/Overlays/GasTileOverlay.cs @@ -13,7 +13,6 @@ namespace Content.Client.Atmos.Overlays private readonly GasTileOverlaySystem _gasTileOverlaySystem; [Dependency] private readonly IMapManager _mapManager = default!; - [Dependency] private readonly IEyeManager _eyeManager = default!; public override OverlaySpace Space => OverlaySpace.WorldSpaceBelowFOV; @@ -28,8 +27,8 @@ namespace Content.Client.Atmos.Overlays { var drawHandle = args.WorldHandle; - var mapId = _eyeManager.CurrentMap; - var worldBounds = _eyeManager.GetWorldViewbounds(); + var mapId = args.Viewport.Eye!.Position.MapId; + var worldBounds = args.WorldBounds; foreach (var mapGrid in _mapManager.FindGridsIntersecting(mapId, worldBounds)) { diff --git a/Content.Client/CombatMode/ColoredScreenBorderOverlay.cs b/Content.Client/CombatMode/ColoredScreenBorderOverlay.cs index 9b02e7ce21..590f4d6b22 100644 --- a/Content.Client/CombatMode/ColoredScreenBorderOverlay.cs +++ b/Content.Client/CombatMode/ColoredScreenBorderOverlay.cs @@ -9,7 +9,6 @@ namespace Content.Client.CombatMode public class ColoredScreenBorderOverlay : Overlay { [Dependency] private readonly IPrototypeManager _prototypeManager = default!; - [Dependency] private readonly IEyeManager _eyeManager = default!; public override OverlaySpace Space => OverlaySpace.WorldSpace; private readonly ShaderInstance _shader; @@ -24,7 +23,7 @@ namespace Content.Client.CombatMode { var worldHandle = args.WorldHandle; worldHandle.UseShader(_shader); - var viewport = _eyeManager.GetWorldViewport(); + var viewport = args.WorldAABB; worldHandle.DrawRect(viewport, Color.White); } } diff --git a/Content.Client/MobState/Overlays/CircleMaskOverlay.cs b/Content.Client/MobState/Overlays/CircleMaskOverlay.cs index d468f5f170..2c378bce6d 100644 --- a/Content.Client/MobState/Overlays/CircleMaskOverlay.cs +++ b/Content.Client/MobState/Overlays/CircleMaskOverlay.cs @@ -10,7 +10,6 @@ namespace Content.Client.MobState.Overlays public class CircleMaskOverlay : Overlay { [Dependency] private readonly IPrototypeManager _prototypeManager = default!; - [Dependency] private readonly IEyeManager _eyeManager = default!; [Dependency] private readonly IPlayerManager _playerManager = default!; public override OverlaySpace Space => OverlaySpace.WorldSpace; @@ -30,7 +29,7 @@ namespace Content.Client.MobState.Overlays var worldHandle = args.WorldHandle; worldHandle.UseShader(_shader); - var viewport = _eyeManager.GetWorldViewport(); + var viewport = args.WorldAABB; worldHandle.DrawRect(viewport, Color.White); } } diff --git a/Content.Client/MobState/Overlays/CritOverlay.cs b/Content.Client/MobState/Overlays/CritOverlay.cs index 51b3b462ed..48c640930a 100644 --- a/Content.Client/MobState/Overlays/CritOverlay.cs +++ b/Content.Client/MobState/Overlays/CritOverlay.cs @@ -12,7 +12,6 @@ namespace Content.Client.MobState.Overlays public class CritOverlay : Overlay { [Dependency] private readonly IPrototypeManager _prototypeManager = default!; - [Dependency] private readonly IEyeManager _eyeManager = default!; [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IEntityManager _entities = default!; @@ -51,7 +50,7 @@ namespace Content.Client.MobState.Overlays return; var worldHandle = args.WorldHandle; - var viewport = _eyeManager.GetWorldViewport(); + var viewport = args.WorldAABB; worldHandle.UseShader(_gradientCircleShader); worldHandle.DrawRect(viewport, Color.White); } diff --git a/Content.Client/NodeContainer/NodeGroupSystem.cs b/Content.Client/NodeContainer/NodeGroupSystem.cs index 4cb7d678c4..30b2f46a36 100644 --- a/Content.Client/NodeContainer/NodeGroupSystem.cs +++ b/Content.Client/NodeContainer/NodeGroupSystem.cs @@ -18,7 +18,6 @@ namespace Content.Client.NodeContainer [Dependency] private readonly IEntityLookup _entityLookup = default!; [Dependency] private readonly IMapManager _mapManager = default!; [Dependency] private readonly IInputManager _inputManager = default!; - [Dependency] private readonly IEyeManager _eyeManager = default!; [Dependency] private readonly IResourceCache _resourceCache = default!; public bool VisEnabled { get; private set; } @@ -83,7 +82,6 @@ namespace Content.Client.NodeContainer _entityLookup, _mapManager, _inputManager, - _eyeManager, _resourceCache, EntityManager); diff --git a/Content.Client/NodeContainer/NodeVisualizationOverlay.cs b/Content.Client/NodeContainer/NodeVisualizationOverlay.cs index 4d155491c1..ad62b483f5 100644 --- a/Content.Client/NodeContainer/NodeVisualizationOverlay.cs +++ b/Content.Client/NodeContainer/NodeVisualizationOverlay.cs @@ -21,7 +21,6 @@ namespace Content.Client.NodeContainer private readonly IEntityLookup _lookup; private readonly IMapManager _mapManager; private readonly IInputManager _inputManager; - private readonly IEyeManager _eyeManager; private readonly IEntityManager _entityManager; private readonly Dictionary<(int, int), NodeRenderData> _nodeIndex = new(); @@ -29,6 +28,7 @@ namespace Content.Client.NodeContainer private readonly Font _font; + private Vector2 _mouseWorldPos = default; private (int group, int node)? _hovered; private float _time; @@ -39,7 +39,6 @@ namespace Content.Client.NodeContainer IEntityLookup lookup, IMapManager mapManager, IInputManager inputManager, - IEyeManager eyeManager, IResourceCache cache, IEntityManager entityManager) { @@ -47,7 +46,6 @@ namespace Content.Client.NodeContainer _lookup = lookup; _mapManager = mapManager; _inputManager = inputManager; - _eyeManager = eyeManager; _entityManager = entityManager; _font = cache.GetFont("/Fonts/NotoSans/NotoSans-Regular.ttf", 12); @@ -67,6 +65,12 @@ namespace Content.Client.NodeContainer private void DrawScreen(in OverlayDrawArgs args) { + var mousePos = _inputManager.MouseScreenPosition.Position; + _mouseWorldPos = args + .ViewportControl! + .ScreenToMap(new Vector2(mousePos.X, mousePos.Y)) + .Position; + if (_hovered == null) return; @@ -75,7 +79,6 @@ namespace Content.Client.NodeContainer var group = _system.Groups[groupId]; var node = _system.NodeLookup[(groupId, nodeId)]; - var mousePos = _inputManager.MouseScreenPosition.Position; var gridId = _entityManager.GetComponent(node.Entity).GridID; var grid = _mapManager.GetGrid(gridId); @@ -102,12 +105,9 @@ namespace Content.Client.NodeContainer if (map == MapId.Nullspace) return; - var mouseScreenPos = _inputManager.MouseScreenPosition; - var mouseWorldPos = _eyeManager.ScreenToMap(mouseScreenPos).Position; - _hovered = default; - var cursorBox = Box2.CenteredAround(mouseWorldPos, (nodeSize, nodeSize)); + var cursorBox = Box2.CenteredAround(_mouseWorldPos, (nodeSize, nodeSize)); // Group visible nodes by grid tiles. var worldAABB = overlayDrawArgs.WorldAABB; diff --git a/Content.Client/Singularity/SingularityOverlay.cs b/Content.Client/Singularity/SingularityOverlay.cs index 9157e859a1..b97addbae7 100644 --- a/Content.Client/Singularity/SingularityOverlay.cs +++ b/Content.Client/Singularity/SingularityOverlay.cs @@ -15,7 +15,6 @@ namespace Content.Client.Singularity { [Dependency] private readonly IEntityManager _entityManager = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; - [Dependency] private readonly IEyeManager _eyeManager = default!; private const float MaxDist = 15.0f; @@ -40,7 +39,7 @@ namespace Content.Client.Singularity { SingularityQuery(args.Viewport.Eye); - var viewportWB = _eyeManager.GetWorldViewport(); + var viewportWB = args.WorldAABB; // Has to be correctly handled because of the way intensity/falloff transform works so just do it. _shader?.SetParameter("renderScale", args.Viewport.RenderScale); foreach (var instance in _singularities.Values) diff --git a/Content.Client/Suspicion/SuspicionRoleComponent.cs b/Content.Client/Suspicion/SuspicionRoleComponent.cs index 5bf4116fce..fee3b951b8 100644 --- a/Content.Client/Suspicion/SuspicionRoleComponent.cs +++ b/Content.Client/Suspicion/SuspicionRoleComponent.cs @@ -16,7 +16,6 @@ namespace Content.Client.Suspicion [Dependency] private readonly IGameHud _gameHud = default!; [Dependency] private readonly IOverlayManager _overlayManager = default!; [Dependency] private readonly IResourceCache _resourceCache = default!; - [Dependency] private readonly IEyeManager _eyeManager = default!; private SuspicionGui? _gui; private string? _role; @@ -72,7 +71,7 @@ namespace Content.Client.Suspicion } _overlayActive = true; - var overlay = new TraitorOverlay(IoCManager.Resolve(), _resourceCache, _eyeManager); + var overlay = new TraitorOverlay(IoCManager.Resolve(), _resourceCache); _overlayManager.AddOverlay(overlay); } diff --git a/Content.Client/Suspicion/TraitorOverlay.cs b/Content.Client/Suspicion/TraitorOverlay.cs index 1666673da6..3d5b912385 100644 --- a/Content.Client/Suspicion/TraitorOverlay.cs +++ b/Content.Client/Suspicion/TraitorOverlay.cs @@ -15,7 +15,6 @@ namespace Content.Client.Suspicion public class TraitorOverlay : Overlay { private readonly IEntityManager _entityManager; - private readonly IEyeManager _eyeManager; private readonly IPlayerManager _playerManager; public override OverlaySpace Space => OverlaySpace.ScreenSpace; @@ -25,20 +24,18 @@ namespace Content.Client.Suspicion public TraitorOverlay( IEntityManager entityManager, - IResourceCache resourceCache, - IEyeManager eyeManager) + IResourceCache resourceCache) { _playerManager = IoCManager.Resolve(); _entityManager = entityManager; - _eyeManager = eyeManager; _font = new VectorFont(resourceCache.GetResource("/Fonts/NotoSans/NotoSans-Regular.ttf"), 10); } protected override void Draw(in OverlayDrawArgs args) { - var viewport = _eyeManager.GetWorldViewport(); + var viewport = args.WorldAABB; var ent = _playerManager.LocalPlayer?.ControlledEntity; if (_entityManager.TryGetComponent(ent, out SuspicionRoleComponent? sus) != true) @@ -68,7 +65,10 @@ namespace Content.Client.Suspicion } // if not on the same map, continue - if (_entityManager.GetComponent(physics.Owner).MapID != _eyeManager.CurrentMap || physics.Owner.IsInContainer()) + if (_entityManager + .GetComponent(physics.Owner) + .MapID != args.Viewport.Eye!.Position.MapId + || physics.Owner.IsInContainer()) { continue; }