]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Fix popups not working properly with an eye offset (#30990)
authorDrSmugleaf <10968691+DrSmugleaf@users.noreply.github.com>
Wed, 14 Aug 2024 13:38:36 +0000 (06:38 -0700)
committerGitHub <noreply@github.com>
Wed, 14 Aug 2024 13:38:36 +0000 (09:38 -0400)
Content.Client/Popups/PopupOverlay.cs

index 77eeb611f517941edca2e9aab6f02a5c8ddb0c70..5a69457720aa23ab5323d966bf878f949316df3f 100644 (file)
@@ -74,8 +74,14 @@ public sealed class PopupOverlay : Overlay
             return;
 
         var matrix = args.ViewportControl.GetWorldToScreenMatrix();
-        var viewPos = new MapCoordinates(args.WorldAABB.Center, args.MapId);
         var ourEntity = _playerMgr.LocalEntity;
+        var viewPos = new MapCoordinates(args.WorldAABB.Center, args.MapId);
+        var ourPos = args.WorldBounds.Center;
+        if (ourEntity != null)
+        {
+            viewPos = _transform.GetMapCoordinates(ourEntity.Value);
+            ourPos = viewPos.Position;
+        }
 
         foreach (var popup in _popup.WorldLabels)
         {
@@ -84,7 +90,7 @@ public sealed class PopupOverlay : Overlay
             if (mapPos.MapId != args.MapId)
                 continue;
 
-            var distance = (mapPos.Position - args.WorldBounds.Center).Length();
+            var distance = (mapPos.Position - ourPos).Length();
 
             // Should handle fade here too wyci.
             if (!args.WorldBounds.Contains(mapPos.Position) || !_examine.InRangeUnOccluded(viewPos, mapPos, distance,