Use FogObscures(WPos).

This commit is contained in:
Paul Chote
2015-06-07 19:28:39 +01:00
parent 66dd3c553c
commit 3994e1eec9
11 changed files with 13 additions and 24 deletions

View File

@@ -158,8 +158,7 @@ namespace OpenRA.Mods.Common.Effects
if (anim == null || ticks >= length) if (anim == null || ticks >= length)
yield break; yield break;
var cell = wr.World.Map.CellContaining(pos); if (!args.SourceActor.World.FogObscures(pos))
if (!args.SourceActor.World.FogObscures(cell))
{ {
if (info.Shadow) if (info.Shadow)
{ {

View File

@@ -18,7 +18,6 @@ namespace OpenRA.Mods.Common.Effects
{ {
readonly World world; readonly World world;
readonly WPos pos; readonly WPos pos;
readonly CPos cell;
readonly string paletteName; readonly string paletteName;
readonly Animation anim; readonly Animation anim;
@@ -26,7 +25,6 @@ namespace OpenRA.Mods.Common.Effects
{ {
this.world = world; this.world = world;
this.pos = pos; this.pos = pos;
this.cell = world.Map.CellContaining(pos);
this.paletteName = paletteName; this.paletteName = paletteName;
anim = new Animation(world, image); anim = new Animation(world, image);
anim.PlayThen(sequence, () => world.AddFrameEndTask(w => w.Remove(this))); anim.PlayThen(sequence, () => world.AddFrameEndTask(w => w.Remove(this)));
@@ -36,7 +34,7 @@ namespace OpenRA.Mods.Common.Effects
public IEnumerable<IRenderable> Render(WorldRenderer wr) public IEnumerable<IRenderable> Render(WorldRenderer wr)
{ {
if (world.FogObscures(cell)) if (world.FogObscures(pos))
return SpriteRenderable.None; return SpriteRenderable.None;
return anim.Render(pos, wr.Palette(paletteName)); return anim.Render(pos, wr.Palette(paletteName));

View File

@@ -36,7 +36,7 @@ namespace OpenRA.Mods.Common.Effects
public IEnumerable<IRenderable> Render(WorldRenderer wr) public IEnumerable<IRenderable> Render(WorldRenderer wr)
{ {
if (!a.IsInWorld || a.World.FogObscures(a.Location)) if (!a.IsInWorld || a.World.FogObscures(a.CenterPosition))
return SpriteRenderable.None; return SpriteRenderable.None;
return anim.Render(a.CenterPosition, wr.Palette(palette)); return anim.Render(a.CenterPosition, wr.Palette(palette));

View File

@@ -20,13 +20,11 @@ namespace OpenRA.Mods.Common.Effects
readonly string palette; readonly string palette;
readonly Animation anim; readonly Animation anim;
WPos pos; WPos pos;
CPos cell;
public Explosion(World world, WPos pos, string sequence, string palette) public Explosion(World world, WPos pos, string sequence, string palette)
{ {
this.world = world; this.world = world;
this.pos = pos; this.pos = pos;
this.cell = world.Map.CellContaining(pos);
this.palette = palette; this.palette = palette;
anim = new Animation(world, "explosion"); anim = new Animation(world, "explosion");
anim.PlayThen(sequence, () => world.AddFrameEndTask(w => w.Remove(this))); anim.PlayThen(sequence, () => world.AddFrameEndTask(w => w.Remove(this)));
@@ -36,7 +34,7 @@ namespace OpenRA.Mods.Common.Effects
public IEnumerable<IRenderable> Render(WorldRenderer wr) public IEnumerable<IRenderable> Render(WorldRenderer wr)
{ {
if (world.FogObscures(cell)) if (world.FogObscures(pos))
return SpriteRenderable.None; return SpriteRenderable.None;
return anim.Render(pos, wr.Palette(palette)); return anim.Render(pos, wr.Palette(palette));

View File

@@ -46,7 +46,7 @@ namespace OpenRA.Mods.Common.Effects
public IEnumerable<IRenderable> Render(WorldRenderer wr) public IEnumerable<IRenderable> Render(WorldRenderer wr)
{ {
if (wr.World.FogObscures(wr.World.Map.CellContaining(pos))) if (wr.World.FogObscures(pos))
yield break; yield break;
yield return new TextRenderable(font, pos, 0, color, text); yield return new TextRenderable(font, pos, 0, color, text);

View File

@@ -78,8 +78,7 @@ namespace OpenRA.Mods.Common.Effects
public IEnumerable<IRenderable> Render(WorldRenderer wr) public IEnumerable<IRenderable> Render(WorldRenderer wr)
{ {
var cell = wr.World.Map.CellContaining(pos); if (!args.SourceActor.World.FogObscures(pos))
if (!args.SourceActor.World.FogObscures(cell))
{ {
if (info.Shadow) if (info.Shadow)
{ {

View File

@@ -85,8 +85,8 @@ namespace OpenRA.Mods.Common.Effects
public IEnumerable<IRenderable> Render(WorldRenderer wr) public IEnumerable<IRenderable> Render(WorldRenderer wr)
{ {
if (wr.World.FogObscures(wr.World.Map.CellContaining(target)) && if (wr.World.FogObscures(target) &&
wr.World.FogObscures(wr.World.Map.CellContaining(args.Source))) wr.World.FogObscures(args.Source))
yield break; yield break;
if (ticks < info.BeamDuration) if (ticks < info.BeamDuration)

View File

@@ -210,7 +210,7 @@ namespace OpenRA.Mods.Common.Effects
if (info.ContrailLength > 0) if (info.ContrailLength > 0)
yield return contrail; yield return contrail;
if (!args.SourceActor.World.FogObscures(wr.World.Map.CellContaining(pos))) if (!args.SourceActor.World.FogObscures(pos))
{ {
if (info.Shadow) if (info.Shadow)
{ {

View File

@@ -18,7 +18,6 @@ namespace OpenRA.Mods.Common.Effects
{ {
readonly World world; readonly World world;
readonly WPos pos; readonly WPos pos;
readonly CPos cell;
readonly Animation anim; readonly Animation anim;
readonly string palette; readonly string palette;
@@ -26,7 +25,6 @@ namespace OpenRA.Mods.Common.Effects
{ {
this.world = world; this.world = world;
this.pos = pos; this.pos = pos;
this.cell = world.Map.CellContaining(pos);
this.palette = palette; this.palette = palette;
anim = new Animation(world, trail); anim = new Animation(world, trail);
@@ -38,7 +36,7 @@ namespace OpenRA.Mods.Common.Effects
public IEnumerable<IRenderable> Render(WorldRenderer wr) public IEnumerable<IRenderable> Render(WorldRenderer wr)
{ {
if (world.FogObscures(cell)) if (world.FogObscures(pos))
return SpriteRenderable.None; return SpriteRenderable.None;
return anim.Render(pos, wr.Palette(palette)); return anim.Render(pos, wr.Palette(palette));

View File

@@ -65,20 +65,17 @@ namespace OpenRA.Mods.Common.Graphics
// Start of the first line segment is the tail of the list - don't smooth it. // Start of the first line segment is the tail of the list - don't smooth it.
var curPos = trail[Index(next - skip - 1)]; var curPos = trail[Index(next - skip - 1)];
var curCell = wr.World.Map.CellContaining(curPos);
var curColor = color; var curColor = color;
for (var i = 0; i < length - skip - 4; i++) for (var i = 0; i < length - skip - 4; i++)
{ {
var j = next - skip - i - 2; var j = next - skip - i - 2;
var nextPos = Average(trail[Index(j)], trail[Index(j - 1)], trail[Index(j - 2)], trail[Index(j - 3)]); var nextPos = Average(trail[Index(j)], trail[Index(j - 1)], trail[Index(j - 2)], trail[Index(j - 3)]);
var nextCell = wr.World.Map.CellContaining(nextPos);
var nextColor = Exts.ColorLerp(i * 1f / (length - 4), color, Color.Transparent); var nextColor = Exts.ColorLerp(i * 1f / (length - 4), color, Color.Transparent);
if (!world.FogObscures(curCell) && !world.FogObscures(nextCell)) if (!world.FogObscures(curPos) && !world.FogObscures(nextPos))
wlr.DrawLine(wr.ScreenPosition(curPos), wr.ScreenPosition(nextPos), curColor, nextColor); wlr.DrawLine(wr.ScreenPosition(curPos), wr.ScreenPosition(nextPos), curColor, nextColor);
curPos = nextPos; curPos = nextPos;
curCell = nextCell;
curColor = nextColor; curColor = nextColor;
} }

View File

@@ -70,8 +70,8 @@ namespace OpenRA.Mods.RA.Graphics
public void RenderDebugGeometry(WorldRenderer wr) { } public void RenderDebugGeometry(WorldRenderer wr) { }
public void Render(WorldRenderer wr) public void Render(WorldRenderer wr)
{ {
if (wr.World.FogObscures(wr.World.Map.CellContaining(pos)) && if (wr.World.FogObscures(pos) &&
wr.World.FogObscures(wr.World.Map.CellContaining(pos + length))) wr.World.FogObscures(pos + length))
return; return;
if (!cache.Any() || length != cachedLength || pos != cachedPos) if (!cache.Any() || length != cachedLength || pos != cachedPos)