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)
yield break;
var cell = wr.World.Map.CellContaining(pos);
if (!args.SourceActor.World.FogObscures(cell))
if (!args.SourceActor.World.FogObscures(pos))
{
if (info.Shadow)
{

View File

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

View File

@@ -36,7 +36,7 @@ namespace OpenRA.Mods.Common.Effects
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 anim.Render(a.CenterPosition, wr.Palette(palette));

View File

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

View File

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

View File

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

View File

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

View File

@@ -18,7 +18,6 @@ namespace OpenRA.Mods.Common.Effects
{
readonly World world;
readonly WPos pos;
readonly CPos cell;
readonly Animation anim;
readonly string palette;
@@ -26,7 +25,6 @@ namespace OpenRA.Mods.Common.Effects
{
this.world = world;
this.pos = pos;
this.cell = world.Map.CellContaining(pos);
this.palette = palette;
anim = new Animation(world, trail);
@@ -38,7 +36,7 @@ namespace OpenRA.Mods.Common.Effects
public IEnumerable<IRenderable> Render(WorldRenderer wr)
{
if (world.FogObscures(cell))
if (world.FogObscures(pos))
return SpriteRenderable.None;
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.
var curPos = trail[Index(next - skip - 1)];
var curCell = wr.World.Map.CellContaining(curPos);
var curColor = color;
for (var i = 0; i < length - skip - 4; i++)
{
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 nextCell = wr.World.Map.CellContaining(nextPos);
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);
curPos = nextPos;
curCell = nextCell;
curColor = nextColor;
}

View File

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