diff --git a/OpenRA.Game/Graphics/Animation.cs b/OpenRA.Game/Graphics/Animation.cs index 2975b525ec..f142abe1da 100644 --- a/OpenRA.Game/Graphics/Animation.cs +++ b/OpenRA.Game/Graphics/Animation.cs @@ -66,9 +66,10 @@ namespace OpenRA.Graphics return new IRenderable[] { imageRenderable }; } - public IRenderable[] RenderUI(int2 pos, WVec offset, int zOffset, PaletteReference palette, float scale) + public IRenderable[] RenderUI(WorldRenderer wr, int2 pos, WVec offset, int zOffset, PaletteReference palette, float scale) { - var imagePos = pos - new int2((int)(scale * Image.Size.X / 2), (int)(scale * Image.Size.Y / 2)); + var screenOffset = (scale * wr.ScreenVectorComponents(offset)).XY.ToInt2(); + var imagePos = pos + screenOffset - new int2((int)(scale * Image.Size.X / 2), (int)(scale * Image.Size.Y / 2)); var imageRenderable = new UISpriteRenderable(Image, WPos.Zero + offset, imagePos, CurrentSequence.ZOffset + zOffset, palette, scale); if (CurrentSequence.ShadowStart >= 0) diff --git a/OpenRA.Mods.Common/Effects/SpriteAnnotation.cs b/OpenRA.Mods.Common/Effects/SpriteAnnotation.cs index f9af40cdcc..524f746e04 100644 --- a/OpenRA.Mods.Common/Effects/SpriteAnnotation.cs +++ b/OpenRA.Mods.Common/Effects/SpriteAnnotation.cs @@ -42,7 +42,7 @@ namespace OpenRA.Mods.Common.Effects IEnumerable IEffectAnnotation.RenderAnnotation(WorldRenderer wr) { var screenPos = wr.Viewport.WorldToViewPx(wr.ScreenPxPosition(pos)); - return anim.RenderUI(screenPos, WVec.Zero, 0, wr.Palette(palette), 1f); + return anim.RenderUI(wr, screenPos, WVec.Zero, 0, wr.Palette(palette), 1f); } } } diff --git a/OpenRA.Mods.Common/Graphics/SpriteActorPreview.cs b/OpenRA.Mods.Common/Graphics/SpriteActorPreview.cs index 16624e71e0..d99516012c 100644 --- a/OpenRA.Mods.Common/Graphics/SpriteActorPreview.cs +++ b/OpenRA.Mods.Common/Graphics/SpriteActorPreview.cs @@ -37,7 +37,7 @@ namespace OpenRA.Mods.Common.Graphics IEnumerable IActorPreview.RenderUI(WorldRenderer wr, int2 pos, float scale) { - return animation.RenderUI(pos, offset(), zOffset(), pr, scale); + return animation.RenderUI(wr, pos, offset(), zOffset(), pr, scale); } IEnumerable IActorPreview.Render(WorldRenderer wr, WPos pos)