Add IRenderModifier.ModifyScreenBounds to support WithShadow.
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
#endregion
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using OpenRA.Graphics;
|
||||
using OpenRA.Traits;
|
||||
@@ -40,7 +41,7 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
this.info = info;
|
||||
}
|
||||
|
||||
public IEnumerable<IRenderable> ModifyRender(Actor self, WorldRenderer wr, IEnumerable<IRenderable> r)
|
||||
IEnumerable<IRenderable> IRenderModifier.ModifyRender(Actor self, WorldRenderer wr, IEnumerable<IRenderable> r)
|
||||
{
|
||||
if (IsTraitDisabled)
|
||||
return r;
|
||||
@@ -55,5 +56,19 @@ namespace OpenRA.Mods.Common.Traits.Render
|
||||
|
||||
return shadowSprites.Concat(r);
|
||||
}
|
||||
|
||||
IEnumerable<Rectangle> IRenderModifier.ModifyScreenBounds(Actor self, WorldRenderer wr, IEnumerable<Rectangle> bounds)
|
||||
{
|
||||
foreach (var r in bounds)
|
||||
yield return r;
|
||||
|
||||
if (IsTraitDisabled)
|
||||
yield break;
|
||||
|
||||
var height = self.World.Map.DistanceAboveTerrain(self.CenterPosition).Length;
|
||||
var offset = wr.ScreenPxOffset(info.Offset - new WVec(0, 0, height));
|
||||
foreach (var r in bounds)
|
||||
yield return new Rectangle(r.X + offset.X, r.Y + offset.Y, r.Width, r.Height);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user