Use FogObscures(WPos).
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user