Merge pull request #3624 from pchote/renderable-fixup

Renderable fixup
This commit is contained in:
Matthias Mailänder
2013-08-02 16:56:30 -07:00
11 changed files with 21 additions and 16 deletions

View File

@@ -73,7 +73,7 @@ namespace OpenRA.Mods.RA.Effects
foreach (var c in rc)
{
yield return c.WithPalette(shadow).WithZOffset(-1);
yield return c.WithPos(pos);
yield return c.OffsetBy(pos - c.Pos);
}
foreach (var r in paraAnim.Render(pos, parachuteOffset, 1, rc.First().Palette, 1f))

View File

@@ -100,7 +100,7 @@ namespace OpenRA.Mods.RA.Orders
var offset = topLeft.CenterPosition + FootprintUtils.CenterOffset(BuildingInfo) - WPos.Zero;
foreach (var r in preview)
r.WithPos(r.Pos + offset).Render(wr);
r.OffsetBy(offset).Render(wr);
var res = world.WorldActor.Trait<ResourceLayer>();
var isCloseEnough = BuildingInfo.IsCloseEnoughToBase(world, world.LocalPlayer, Building, topLeft);

View File

@@ -30,11 +30,14 @@ namespace OpenRA.Mods.RA.Render
var visualOffset = (ios is Helicopter && flying)
? (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(a.ZOffset + a.Pos.Z));
// Contrails shouldn't cast shadows
var shadowSprites = r.Where(s => !(s is ContrailRenderable))
.Select(a => a.WithPalette(wr.Palette("shadow"))
.OffsetBy(new WVec(0, 0, -a.Pos.Z)).WithZOffset(a.ZOffset + a.Pos.Z));
var worldVisualOffset = new WVec(0,0,-43*visualOffset);
var flyingSprites = !flying ? r :
r.Select(a => a.WithPos(a.Pos - new WVec(0,0,43*visualOffset)));
r.Select(a => a.OffsetBy(worldVisualOffset));
return shadowSprites.Concat(flyingSprites);
}

View File

@@ -247,7 +247,7 @@ namespace OpenRA.Mods.RA
var offset = (xy - sourceLocation).ToWVec();
if (manager.self.Owner.Shroud.IsTargetable(unit))
foreach (var r in unit.Render(wr))
r.WithPos(r.Pos + offset).Render(wr);
r.OffsetBy(offset).Render(wr);
}
// Unit tiles

View File

@@ -64,8 +64,8 @@ namespace OpenRA.Mods.RA
public IRenderable WithScale(float newScale) { return new TeslaZapRenderable(pos, zOffset, length, image, brightZaps, dimZaps); }
public IRenderable WithPalette(PaletteReference newPalette) { return new TeslaZapRenderable(pos, zOffset, length, image, brightZaps, dimZaps); }
public IRenderable WithZOffset(int newOffset) { return new TeslaZapRenderable(pos, zOffset, length, image, brightZaps, dimZaps); }
public IRenderable WithPos(WPos pos) { return new TeslaZapRenderable(pos, zOffset, length, image, brightZaps, dimZaps); }
public IRenderable OffsetBy(WVec vec) { return new TeslaZapRenderable(pos + vec, zOffset, length, image, brightZaps, dimZaps); }
public void BeforeRender(WorldRenderer wr) { }
public void RenderDebugGeometry(WorldRenderer wr) { }
public void Render(WorldRenderer wr)