Overlays: Avoid using IEyeManager whenever possible (#5709)

This commit is contained in:
E F R
2021-12-10 05:47:21 +00:00
committed by GitHub
parent b3a4e3f557
commit 8bd386dcb0
13 changed files with 39 additions and 42 deletions

View File

@@ -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<FontResource>("/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<IEntityManager>().GetComponent<TransformComponent>(entity).MapID != _eyeManager.CurrentMap)
if (IoCManager
.Resolve<IEntityManager>()
.GetComponent<TransformComponent>(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);

View File

@@ -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!;

View File

@@ -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;
}

View File

@@ -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! --

View File

@@ -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))
{

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -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<TransformComponent>(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;

View File

@@ -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)

View File

@@ -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<IEntityManager>(), _resourceCache, _eyeManager);
var overlay = new TraitorOverlay(IoCManager.Resolve<IEntityManager>(), _resourceCache);
_overlayManager.AddOverlay(overlay);
}

View File

@@ -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<IPlayerManager>();
_entityManager = entityManager;
_eyeManager = eyeManager;
_font = new VectorFont(resourceCache.GetResource<FontResource>("/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<TransformComponent>(physics.Owner).MapID != _eyeManager.CurrentMap || physics.Owner.IsInContainer())
if (_entityManager
.GetComponent<TransformComponent>(physics.Owner)
.MapID != args.Viewport.Eye!.Position.MapId
|| physics.Owner.IsInContainer())
{
continue;
}