Made projectile shadows heightmap-aware.
This commit is contained in:
@@ -177,11 +177,13 @@ namespace OpenRA.Mods.Common.Effects
|
|||||||
if (anim == null || ticks >= length)
|
if (anim == null || ticks >= length)
|
||||||
yield break;
|
yield break;
|
||||||
|
|
||||||
if (!args.SourceActor.World.FogObscures(pos))
|
var world = args.SourceActor.World;
|
||||||
|
if (!world.FogObscures(pos))
|
||||||
{
|
{
|
||||||
if (info.Shadow)
|
if (info.Shadow)
|
||||||
{
|
{
|
||||||
var shadowPos = pos - new WVec(0, 0, pos.Z);
|
var dat = world.Map.DistanceAboveTerrain(pos);
|
||||||
|
var shadowPos = pos - new WVec(0, 0, dat.Length);
|
||||||
foreach (var r in anim.Render(shadowPos, wr.Palette(info.ShadowPalette)))
|
foreach (var r in anim.Render(shadowPos, wr.Palette(info.ShadowPalette)))
|
||||||
yield return r;
|
yield return r;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -84,11 +84,13 @@ namespace OpenRA.Mods.Common.Effects
|
|||||||
|
|
||||||
public IEnumerable<IRenderable> Render(WorldRenderer wr)
|
public IEnumerable<IRenderable> Render(WorldRenderer wr)
|
||||||
{
|
{
|
||||||
if (!args.SourceActor.World.FogObscures(pos))
|
var world = args.SourceActor.World;
|
||||||
|
if (!world.FogObscures(pos))
|
||||||
{
|
{
|
||||||
if (info.Shadow)
|
if (info.Shadow)
|
||||||
{
|
{
|
||||||
var shadowPos = pos - new WVec(0, 0, pos.Z);
|
var dat = world.Map.DistanceAboveTerrain(pos);
|
||||||
|
var shadowPos = pos - new WVec(0, 0, dat.Length);
|
||||||
foreach (var r in anim.Render(shadowPos, wr.Palette("shadow")))
|
foreach (var r in anim.Render(shadowPos, wr.Palette("shadow")))
|
||||||
yield return r;
|
yield return r;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -227,11 +227,13 @@ namespace OpenRA.Mods.Common.Effects
|
|||||||
if (info.ContrailLength > 0)
|
if (info.ContrailLength > 0)
|
||||||
yield return contrail;
|
yield return contrail;
|
||||||
|
|
||||||
if (!args.SourceActor.World.FogObscures(pos))
|
var world = args.SourceActor.World;
|
||||||
|
if (!world.FogObscures(pos))
|
||||||
{
|
{
|
||||||
if (info.Shadow)
|
if (info.Shadow)
|
||||||
{
|
{
|
||||||
var shadowPos = new WPos(pos.X, pos.Y, 0);
|
var dat = world.Map.DistanceAboveTerrain(pos);
|
||||||
|
var shadowPos = new WPos(pos.X, pos.Y, dat.Length);
|
||||||
foreach (var r in anim.Render(shadowPos, wr.Palette("shadow")))
|
foreach (var r in anim.Render(shadowPos, wr.Palette("shadow")))
|
||||||
yield return r;
|
yield return r;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user