#2160 fixed - RenderCargo support for relative altitude
This commit is contained in:
@@ -15,9 +15,12 @@ using OpenRA.Traits;
|
|||||||
|
|
||||||
namespace OpenRA.Mods.Cnc
|
namespace OpenRA.Mods.Cnc
|
||||||
{
|
{
|
||||||
class RenderCargoInfo : ITraitInfo, Requires<CargoInfo>
|
public class RenderCargoInfo : ITraitInfo, Requires<CargoInfo>
|
||||||
{
|
{
|
||||||
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
|
public class RenderCargo : IRenderModifier
|
||||||
@@ -25,12 +28,14 @@ namespace OpenRA.Mods.Cnc
|
|||||||
Cargo cargo;
|
Cargo cargo;
|
||||||
IFacing facing;
|
IFacing facing;
|
||||||
IMove move;
|
IMove move;
|
||||||
|
RenderCargoInfo Info;
|
||||||
|
|
||||||
public RenderCargo(Actor self)
|
public RenderCargo(Actor self, RenderCargoInfo info)
|
||||||
{
|
{
|
||||||
cargo = self.Trait<Cargo>();
|
cargo = self.Trait<Cargo>();
|
||||||
facing = self.TraitOrDefault<IFacing>();
|
facing = self.TraitOrDefault<IFacing>();
|
||||||
move = self.Trait<IMove>();
|
move = self.Trait<IMove>();
|
||||||
|
Info = info;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<Renderable> ModifyRender(Actor self, IEnumerable<Renderable> r)
|
public IEnumerable<Renderable> ModifyRender(Actor self, IEnumerable<Renderable> r)
|
||||||
@@ -44,7 +49,9 @@ namespace OpenRA.Mods.Cnc
|
|||||||
cargoFacing.Facing = facing.Facing;
|
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)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -30,7 +30,7 @@ namespace OpenRA.Mods.RA.Render
|
|||||||
|
|
||||||
var shadowSprites = r.Select(a => a.WithPalette("shadow"));
|
var shadowSprites = r.Select(a => a.WithPalette("shadow"));
|
||||||
var flyingSprites = (move.Altitude <= 0) ? r
|
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);
|
return shadowSprites.Concat(flyingSprites);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user