Fix speech bubble (#5042)

* Fix speech bubble position when eye rotated

* Fix speech bubble size jitter when floating up
This commit is contained in:
ShadowCommander
2021-10-26 18:31:22 -07:00
committed by GitHub
parent acf5f178e5
commit 3d0881cefd

View File

@@ -1,5 +1,6 @@
using System;
using Content.Client.Chat.Managers;
using Content.Client.Viewport;
using Robust.Client.Graphics;
using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls;
@@ -114,13 +115,16 @@ namespace Content.Client.Chat.UI
return;
var worldPos = _senderEntity.Transform.WorldPosition;
worldPos += (0, EntityVerticalOffset);
var scale = _eyeManager.MainViewport.GetRenderScale();
var offset = new Vector2(0, EntityVerticalOffset * EyeManager.PixelsPerMeter * scale);
var lowerCenter = (_eyeManager.WorldToScreen(worldPos) - offset) / UIScale;
var lowerCenter = _eyeManager.WorldToScreen(worldPos) / UIScale;
var screenPos = lowerCenter - (Width / 2, ContentHeight + _verticalOffsetAchieved);
// Round to nearest 0.5
screenPos = (screenPos * 2).Rounded() / 2;
LayoutContainer.SetPosition(this, screenPos);
var height = MathHelper.Clamp(lowerCenter.Y - screenPos.Y, 0, ContentHeight);
var height = MathF.Ceiling(MathHelper.Clamp(lowerCenter.Y - screenPos.Y, 0, ContentHeight));
SetHeight = height;
}