diff --git a/OpenRA.Game/Graphics/Renderable.cs b/OpenRA.Game/Graphics/Renderable.cs index 10e15b7fc3..d8e247431f 100644 --- a/OpenRA.Game/Graphics/Renderable.cs +++ b/OpenRA.Game/Graphics/Renderable.cs @@ -23,8 +23,8 @@ namespace OpenRA.Graphics public int Compare(IRenderable x, IRenderable y) { - var xOrder = wr.ScreenZPosition(x.Pos) + x.ZOffset; - var yOrder = wr.ScreenZPosition(y.Pos) + y.ZOffset; + var xOrder = wr.ScreenZPosition(x.Pos, x.ZOffset); + var yOrder = wr.ScreenZPosition(y.Pos, y.ZOffset); return xOrder.CompareTo(yOrder); } } diff --git a/OpenRA.Game/Graphics/WorldRenderer.cs b/OpenRA.Game/Graphics/WorldRenderer.cs index ede270e140..87eef096f2 100644 --- a/OpenRA.Game/Graphics/WorldRenderer.cs +++ b/OpenRA.Game/Graphics/WorldRenderer.cs @@ -219,6 +219,6 @@ namespace OpenRA.Graphics return new int2((int)Math.Round(px.X), (int)Math.Round(px.Y)); } - public float ScreenZPosition(WPos pos) { return (pos.Y + pos.Z)*Game.CellSize/1024f; } + public float ScreenZPosition(WPos pos, int zOffset) { return (pos.Y + pos.Z + zOffset)*Game.CellSize/1024f; } } } diff --git a/OpenRA.Mods.RA/Render/WithShadow.cs b/OpenRA.Mods.RA/Render/WithShadow.cs index b866d6c2e3..a6e265921f 100644 --- a/OpenRA.Mods.RA/Render/WithShadow.cs +++ b/OpenRA.Mods.RA/Render/WithShadow.cs @@ -31,7 +31,7 @@ namespace OpenRA.Mods.RA.Render ? (int)Math.Abs((self.ActorID + Game.LocalTick) / 5 % 4 - 1) - 1 : 0; var shadowSprites = r.Select(a => a.WithPalette(wr.Palette("shadow")) - .WithPos(a.Pos - new WVec(0, 0, a.Pos.Z)).WithZOffset(-24)); + .WithPos(a.Pos - new WVec(0, 0, a.Pos.Z)).WithZOffset(a.ZOffset + a.Pos.Z)); var flyingSprites = (move.Altitude <= 0) ? r : r.Select(a => a.WithPos(a.Pos - new WVec(0,0,43*visualOffset)));