Change IRenderable.WithPos -> OffsetBy.

This is more appropriate for the actual use cases.
Fixes #3621.
This commit is contained in:
Paul Chote
2013-08-03 11:16:52 +12:00
parent 3788d4f185
commit 805b4b6258
11 changed files with 18 additions and 15 deletions

View File

@@ -38,7 +38,7 @@ namespace OpenRA.Graphics
public IRenderable WithScale(float newScale) { return new BeamRenderable(pos, zOffset, length, width, color); } public IRenderable WithScale(float newScale) { return new BeamRenderable(pos, zOffset, length, width, color); }
public IRenderable WithPalette(PaletteReference newPalette) { return new BeamRenderable(pos, zOffset, length, width, color); } public IRenderable WithPalette(PaletteReference newPalette) { return new BeamRenderable(pos, zOffset, length, width, color); }
public IRenderable WithZOffset(int newOffset) { return new BeamRenderable(pos, zOffset, length, width, color); } public IRenderable WithZOffset(int newOffset) { return new BeamRenderable(pos, zOffset, length, width, color); }
public IRenderable WithPos(WPos pos) { return new BeamRenderable(pos, zOffset, length, width, color); } public IRenderable OffsetBy(WVec vec) { return new BeamRenderable(pos + vec, zOffset, length, width, color); }
public void BeforeRender(WorldRenderer wr) {} public void BeforeRender(WorldRenderer wr) {}
public void Render(WorldRenderer wr) public void Render(WorldRenderer wr)

View File

@@ -11,6 +11,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.Linq;
namespace OpenRA.Graphics namespace OpenRA.Graphics
{ {
@@ -49,7 +50,7 @@ namespace OpenRA.Graphics
public IRenderable WithScale(float newScale) { return new ContrailRenderable(world, (WPos[])trail.Clone(), next, length, skip, color, zOffset); } public IRenderable WithScale(float newScale) { return new ContrailRenderable(world, (WPos[])trail.Clone(), next, length, skip, color, zOffset); }
public IRenderable WithPalette(PaletteReference newPalette) { return new ContrailRenderable(world, (WPos[])trail.Clone(), next, length, skip, color, zOffset); } public IRenderable WithPalette(PaletteReference newPalette) { return new ContrailRenderable(world, (WPos[])trail.Clone(), next, length, skip, color, zOffset); }
public IRenderable WithZOffset(int newOffset) { return new ContrailRenderable(world, (WPos[])trail.Clone(), next, length, skip, color, newOffset); } public IRenderable WithZOffset(int newOffset) { return new ContrailRenderable(world, (WPos[])trail.Clone(), next, length, skip, color, newOffset); }
public IRenderable WithPos(WPos pos) { return new ContrailRenderable(world, (WPos[])trail.Clone(), next, length, skip, color, zOffset); } public IRenderable OffsetBy(WVec vec) { return new ContrailRenderable(world, trail.Select(pos => pos + vec).ToArray(), next, length, skip, color, zOffset); }
public void BeforeRender(WorldRenderer wr) {} public void BeforeRender(WorldRenderer wr) {}
public void Render(WorldRenderer wr) public void Render(WorldRenderer wr)

View File

@@ -40,7 +40,7 @@ namespace OpenRA.Graphics
IRenderable WithScale(float newScale); IRenderable WithScale(float newScale);
IRenderable WithPalette(PaletteReference newPalette); IRenderable WithPalette(PaletteReference newPalette);
IRenderable WithZOffset(int newOffset); IRenderable WithZOffset(int newOffset);
IRenderable WithPos(WPos pos); IRenderable OffsetBy(WVec offset);
void BeforeRender(WorldRenderer wr); void BeforeRender(WorldRenderer wr);
void Render(WorldRenderer wr); void Render(WorldRenderer wr);
void RenderDebugGeometry(WorldRenderer wr); void RenderDebugGeometry(WorldRenderer wr);
@@ -75,6 +75,7 @@ namespace OpenRA.Graphics
: this(sprite, new PPos((int)pos.X, (int)pos.Y).ToWPos(0), z, palette, 1f) { } : this(sprite, new PPos((int)pos.X, (int)pos.Y).ToWPos(0), z, palette, 1f) { }
public WPos Pos { get { return pos + offset; } } public WPos Pos { get { return pos + offset; } }
public WVec Offset { get { return offset; } }
public float Scale { get { return scale; } } public float Scale { get { return scale; } }
public PaletteReference Palette { get { return palette; } } public PaletteReference Palette { get { return palette; } }
public int ZOffset { get { return zOffset; } } public int ZOffset { get { return zOffset; } }
@@ -82,7 +83,7 @@ namespace OpenRA.Graphics
public IRenderable WithScale(float newScale) { return new SpriteRenderable(sprite, pos, offset, zOffset, palette, newScale); } public IRenderable WithScale(float newScale) { return new SpriteRenderable(sprite, pos, offset, zOffset, palette, newScale); }
public IRenderable WithPalette(PaletteReference newPalette) { return new SpriteRenderable(sprite, pos, offset, zOffset, newPalette, scale); } public IRenderable WithPalette(PaletteReference newPalette) { return new SpriteRenderable(sprite, pos, offset, zOffset, newPalette, scale); }
public IRenderable WithZOffset(int newOffset) { return new SpriteRenderable(sprite, pos, offset, newOffset, palette, scale); } public IRenderable WithZOffset(int newOffset) { return new SpriteRenderable(sprite, pos, offset, newOffset, palette, scale); }
public IRenderable WithPos(WPos pos) { return new SpriteRenderable(sprite, pos, offset, zOffset, palette, scale); } public IRenderable OffsetBy(WVec vec) { return new SpriteRenderable(sprite, pos + vec, offset, zOffset, palette, scale); }
float2 ScreenPosition(WorldRenderer wr) float2 ScreenPosition(WorldRenderer wr)
{ {

View File

@@ -39,7 +39,7 @@ namespace OpenRA.Graphics
public IRenderable WithScale(float newScale) { return new TextRenderable(font, pos, zOffset, color, text); } public IRenderable WithScale(float newScale) { return new TextRenderable(font, pos, zOffset, color, text); }
public IRenderable WithPalette(PaletteReference newPalette) { return new TextRenderable(font, pos, zOffset, color, text); } public IRenderable WithPalette(PaletteReference newPalette) { return new TextRenderable(font, pos, zOffset, color, text); }
public IRenderable WithZOffset(int newOffset) { return new TextRenderable(font, pos, zOffset, color, text); } public IRenderable WithZOffset(int newOffset) { return new TextRenderable(font, pos, zOffset, color, text); }
public IRenderable WithPos(WPos pos) { return new TextRenderable(font, pos, zOffset, color, text); } public IRenderable OffsetBy(WVec vec) { return new TextRenderable(font, pos + vec, zOffset, color, text); }
public void BeforeRender(WorldRenderer wr) {} public void BeforeRender(WorldRenderer wr) {}
public void Render(WorldRenderer wr) public void Render(WorldRenderer wr)

View File

@@ -76,9 +76,9 @@ namespace OpenRA.Graphics
palette, normalsPalette, shadowPalette); palette, normalsPalette, shadowPalette);
} }
public IRenderable WithPos(WPos newPos) public IRenderable OffsetBy(WVec vec)
{ {
return new VoxelRenderable(voxels, newPos, zOffset, camera, scale, return new VoxelRenderable(voxels, pos + vec, zOffset, camera, scale,
lightSource, lightAmbientColor, lightDiffuseColor, lightSource, lightAmbientColor, lightDiffuseColor,
palette, normalsPalette, shadowPalette); palette, normalsPalette, shadowPalette);
} }

View File

@@ -70,7 +70,7 @@ namespace OpenRA.Mods.Cnc
{ {
var offset = pos - c.CenterPosition + body.LocalToWorld(positions[i++ % positions.Length].Rotate(bodyOrientation)); var offset = pos - c.CenterPosition + body.LocalToWorld(positions[i++ % positions.Length].Rotate(bodyOrientation));
foreach (var cr in c.Render(wr)) foreach (var cr in c.Render(wr))
yield return cr.WithPos(cr.Pos + offset).WithZOffset(1); yield return cr.OffsetBy(offset).WithZOffset(1);
} }
} }
} }

View File

@@ -73,7 +73,7 @@ namespace OpenRA.Mods.RA.Effects
foreach (var c in rc) foreach (var c in rc)
{ {
yield return c.WithPalette(shadow).WithZOffset(-1); 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)) 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; var offset = topLeft.CenterPosition + FootprintUtils.CenterOffset(BuildingInfo) - WPos.Zero;
foreach (var r in preview) foreach (var r in preview)
r.WithPos(r.Pos + offset).Render(wr); r.OffsetBy(offset).Render(wr);
var res = world.WorldActor.Trait<ResourceLayer>(); var res = world.WorldActor.Trait<ResourceLayer>();
var isCloseEnough = BuildingInfo.IsCloseEnoughToBase(world, world.LocalPlayer, Building, topLeft); var isCloseEnough = BuildingInfo.IsCloseEnoughToBase(world, world.LocalPlayer, Building, topLeft);

View File

@@ -31,10 +31,11 @@ namespace OpenRA.Mods.RA.Render
? (int)Math.Abs((self.ActorID + Game.LocalTick) / 5 % 4 - 1) - 1 : 0; ? (int)Math.Abs((self.ActorID + Game.LocalTick) / 5 % 4 - 1) - 1 : 0;
var shadowSprites = r.Select(a => a.WithPalette(wr.Palette("shadow")) 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)); .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 : 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); return shadowSprites.Concat(flyingSprites);
} }

View File

@@ -247,7 +247,7 @@ namespace OpenRA.Mods.RA
var offset = (xy - sourceLocation).ToWVec(); var offset = (xy - sourceLocation).ToWVec();
if (manager.self.Owner.Shroud.IsTargetable(unit)) if (manager.self.Owner.Shroud.IsTargetable(unit))
foreach (var r in unit.Render(wr)) foreach (var r in unit.Render(wr))
r.WithPos(r.Pos + offset).Render(wr); r.OffsetBy(offset).Render(wr);
} }
// Unit tiles // 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 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 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 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 BeforeRender(WorldRenderer wr) { }
public void RenderDebugGeometry(WorldRenderer wr) { } public void RenderDebugGeometry(WorldRenderer wr) { }
public void Render(WorldRenderer wr) public void Render(WorldRenderer wr)