Pass WorldRenderer to Render().
This commit is contained in:
@@ -93,8 +93,8 @@ namespace OpenRA
|
||||
vis = Shroud.GetVisOrigins(this).ToArray()
|
||||
};
|
||||
}
|
||||
|
||||
ApplyIRender = x => x.Render(this);
|
||||
|
||||
ApplyIRender = (x, wr) => x.Render(this, wr);
|
||||
ApplyRenderModifier = (m, p, wr) => p.ModifyRender(this, wr, m);
|
||||
|
||||
Bounds = Cached.New(() => CalculateBounds(false));
|
||||
@@ -122,12 +122,12 @@ namespace OpenRA
|
||||
OpenRA.FileFormats.Lazy<int2> Size;
|
||||
|
||||
// note: these delegates are cached to avoid massive allocation.
|
||||
Func<IRender, IEnumerable<Renderable>> ApplyIRender;
|
||||
Func<IRender, WorldRenderer, IEnumerable<Renderable>> ApplyIRender;
|
||||
Func<IEnumerable<Renderable>, IRenderModifier, WorldRenderer, IEnumerable<Renderable>> ApplyRenderModifier;
|
||||
public IEnumerable<Renderable> Render(WorldRenderer wr)
|
||||
{
|
||||
var mods = TraitsImplementing<IRenderModifier>();
|
||||
var sprites = TraitsImplementing<IRender>().SelectMany(ApplyIRender);
|
||||
var sprites = TraitsImplementing<IRender>().SelectMany(x => ApplyIRender(x, wr));
|
||||
return mods.Aggregate(sprites, (m,p) => ApplyRenderModifier(m,p,wr));
|
||||
}
|
||||
|
||||
|
||||
@@ -78,17 +78,17 @@ namespace OpenRA.Traits
|
||||
anim.PlayRepeating("idle");
|
||||
}
|
||||
|
||||
public PaletteReference Palette(Player p)
|
||||
public PaletteReference Palette(Player p, WorldRenderer wr)
|
||||
{
|
||||
return PaletteReference.FromName(Info.Palette ?? Info.PlayerPalette + p.InternalName);
|
||||
return wr.Palette(Info.Palette ?? Info.PlayerPalette + p.InternalName);
|
||||
}
|
||||
|
||||
public virtual IEnumerable<Renderable> Render(Actor self)
|
||||
public virtual IEnumerable<Renderable> Render(Actor self, WorldRenderer wr)
|
||||
{
|
||||
foreach (var a in anims.Values)
|
||||
if (a.DisableFunc == null || !a.DisableFunc())
|
||||
{
|
||||
Renderable ret = a.Image(self, Palette(self.Owner));
|
||||
Renderable ret = a.Image(self, Palette(self.Owner, wr));
|
||||
if (Info.Scale != 1f)
|
||||
ret = ret.WithScale(Info.Scale).WithPos(ret.Pos + 0.5f * ret.Sprite.size * (1 - Info.Scale));
|
||||
yield return ret;
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace OpenRA.Traits
|
||||
}
|
||||
|
||||
public interface ITick { void Tick(Actor self); }
|
||||
public interface IRender { IEnumerable<Renderable> Render(Actor self); }
|
||||
public interface IRender { IEnumerable<Renderable> Render(Actor self, WorldRenderer wr); }
|
||||
public interface IAutoSelectionSize { int2 SelectionSize(Actor self); }
|
||||
|
||||
public interface IIssueOrder
|
||||
|
||||
Reference in New Issue
Block a user