From ed4a22510a72ff447c24cc4ff2e4375baf924df3 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Sun, 1 Jan 2023 16:47:52 +1100 Subject: [PATCH] Popup occlusion (#13255) --- Content.Client/Popups/PopupOverlay.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Content.Client/Popups/PopupOverlay.cs b/Content.Client/Popups/PopupOverlay.cs index f76e024d7f..cb8fa81aaa 100644 --- a/Content.Client/Popups/PopupOverlay.cs +++ b/Content.Client/Popups/PopupOverlay.cs @@ -1,4 +1,7 @@ +using Content.Client.Examine; using Content.Shared.CCVar; +using Content.Shared.Examine; +using Content.Shared.Interaction; using Content.Shared.Popups; using Robust.Client.Graphics; using Robust.Client.ResourceManagement; @@ -6,6 +9,7 @@ using Robust.Client.UserInterface; using Robust.Shared; using Robust.Shared.Configuration; using Robust.Shared.Enums; +using Robust.Shared.Map; using Robust.Shared.Prototypes; namespace Content.Client.Popups; @@ -70,6 +74,7 @@ public sealed class PopupOverlay : Overlay return; var matrix = args.ViewportControl!.GetWorldToScreenMatrix(); + var viewPos = new MapCoordinates(args.WorldAABB.Center, args.MapId); foreach (var popup in _popup.WorldLabels) { @@ -78,7 +83,11 @@ public sealed class PopupOverlay : Overlay if (mapPos.MapId != args.MapId) continue; - if (!args.WorldAABB.Contains(mapPos.Position)) + var distance = (mapPos.Position - args.WorldBounds.Centre).Length; + + // Should handle fade here too wyci. + if (!args.WorldAABB.Contains(mapPos.Position) || !ExamineSystemShared.InRangeUnOccluded(viewPos, mapPos, distance, + e => e == popup.InitialPos.EntityId, entMan: _entManager)) continue; var pos = matrix.Transform(mapPos.Position);