diff --git a/OpenRA.Mods.Cnc/RenderCargo.cs b/OpenRA.Mods.Cnc/RenderCargo.cs index d621ab4bc9..fa38c27d09 100644 --- a/OpenRA.Mods.Cnc/RenderCargo.cs +++ b/OpenRA.Mods.Cnc/RenderCargo.cs @@ -15,9 +15,12 @@ using OpenRA.Traits; namespace OpenRA.Mods.Cnc { - class RenderCargoInfo : ITraitInfo, Requires + public class RenderCargoInfo : ITraitInfo, Requires { - public object Create(ActorInitializer init) { return new RenderCargo(init.self); } + /* altitude of the cargo, relative to us. -ve is underneath us */ + public readonly int RelativeAltitude = 0; + + public object Create(ActorInitializer init) { return new RenderCargo(init.self, this); } } public class RenderCargo : IRenderModifier @@ -25,12 +28,14 @@ namespace OpenRA.Mods.Cnc Cargo cargo; IFacing facing; IMove move; + RenderCargoInfo Info; - public RenderCargo(Actor self) + public RenderCargo(Actor self, RenderCargoInfo info) { cargo = self.Trait(); facing = self.TraitOrDefault(); move = self.Trait(); + Info = info; } public IEnumerable ModifyRender(Actor self, IEnumerable r) @@ -44,7 +49,9 @@ namespace OpenRA.Mods.Cnc cargoFacing.Facing = facing.Facing; } - return r.Concat(cargo.Passengers.SelectMany(a => a.Render())); + return r.Concat(cargo.Passengers.SelectMany(a => a.Render()) + .Select(a => a.WithPos(a.Pos - new float2(0, Info.RelativeAltitude)) + .WithZOffset(a.ZOffset + Info.RelativeAltitude))); } } } \ No newline at end of file diff --git a/OpenRA.Mods.RA/Render/WithShadow.cs b/OpenRA.Mods.RA/Render/WithShadow.cs index a69fb29839..c07a047dba 100644 --- a/OpenRA.Mods.RA/Render/WithShadow.cs +++ b/OpenRA.Mods.RA/Render/WithShadow.cs @@ -30,7 +30,7 @@ namespace OpenRA.Mods.RA.Render var shadowSprites = r.Select(a => a.WithPalette("shadow")); var flyingSprites = (move.Altitude <= 0) ? r - : r.Select(a => a.WithPos(a.Pos - new float2(0, move.Altitude + visualOffset)).WithZOffset(move.Altitude)); + : r.Select(a => a.WithPos(a.Pos - new float2(0, move.Altitude + visualOffset)).WithZOffset(move.Altitude + a.ZOffset)); return shadowSprites.Concat(flyingSprites); }