Overlays: Avoid using IEyeManager whenever possible (#5709)
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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!;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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! --
|
||||
|
||||
@@ -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))
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user