diff --git a/OpenRA.Mods.Common/Traits/Render/WithParachute.cs b/OpenRA.Mods.Common/Traits/Render/WithParachute.cs index 12b02e1c28..1296c85a1f 100644 --- a/OpenRA.Mods.Common/Traits/Render/WithParachute.cs +++ b/OpenRA.Mods.Common/Traits/Render/WithParachute.cs @@ -18,7 +18,7 @@ using OpenRA.Traits; namespace OpenRA.Mods.Common.Traits.Render { [Desc("Renders a parachute on units.")] - public class WithParachuteInfo : UpgradableTraitInfo, ITraitInfo, IRenderActorPreviewSpritesInfo, Requires, Requires + public class WithParachuteInfo : UpgradableTraitInfo, IRenderActorPreviewSpritesInfo, Requires, Requires { [Desc("The image that contains the parachute sequences.")] public readonly string Image = null; @@ -79,7 +79,7 @@ namespace OpenRA.Mods.Common.Traits.Render } } - public class WithParachute : UpgradableTrait, IRender + public class WithParachute : UpgradableTrait, ITick, IRender { readonly Animation shadow; readonly AnimationWithOffset anim; @@ -133,6 +133,11 @@ namespace OpenRA.Mods.Common.Traits.Render anim.Animation.PlayBackwardsThen(info.OpeningSequence, () => renderProlonged = false); } + public void Tick(Actor self) + { + shadow.Tick(); + } + public IEnumerable Render(Actor self, WorldRenderer wr) { if (info.ShadowImage == null) @@ -147,8 +152,8 @@ namespace OpenRA.Mods.Common.Traits.Render if (self.World.FogObscures(self)) return Enumerable.Empty(); - shadow.Tick(); - var pos = self.CenterPosition - new WVec(0, 0, self.CenterPosition.Z); + var dat = self.World.Map.DistanceAboveTerrain(self.CenterPosition); + var pos = self.CenterPosition - new WVec(0, 0, dat.Length); var palette = wr.Palette(info.ShadowPalette); return new IRenderable[] { new SpriteRenderable(shadow.Image, pos, info.ShadowOffset, info.ShadowZOffset, palette, 1, true) }; }