Merge pull request #7281 from RoosterDragon/cache-render-traits
Cache render related TraitsImplementing calls in Actor.
This commit is contained in:
@@ -65,6 +65,9 @@ namespace OpenRA
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
readonly IEnumerable<IRenderModifier> traitsImplementingRenderModifier;
|
||||||
|
readonly IEnumerable<IRender> traitsImplementingRender;
|
||||||
|
|
||||||
internal Actor(World world, string name, TypeDictionary initDict)
|
internal Actor(World world, string name, TypeDictionary initDict)
|
||||||
{
|
{
|
||||||
var init = new ActorInitializer(this, initDict);
|
var init = new ActorInitializer(this, initDict);
|
||||||
@@ -104,6 +107,9 @@ namespace OpenRA
|
|||||||
|
|
||||||
return new Rectangle(offset.X, offset.Y, size.X, size.Y);
|
return new Rectangle(offset.X, offset.Y, size.X, size.Y);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
traitsImplementingRenderModifier = TraitsImplementing<IRenderModifier>();
|
||||||
|
traitsImplementingRender = TraitsImplementing<IRender>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Tick()
|
public void Tick()
|
||||||
@@ -119,14 +125,14 @@ namespace OpenRA
|
|||||||
public IEnumerable<IRenderable> Render(WorldRenderer wr)
|
public IEnumerable<IRenderable> Render(WorldRenderer wr)
|
||||||
{
|
{
|
||||||
var renderables = Renderables(wr);
|
var renderables = Renderables(wr);
|
||||||
foreach (var modifier in TraitsImplementing<IRenderModifier>())
|
foreach (var modifier in traitsImplementingRenderModifier)
|
||||||
renderables = modifier.ModifyRender(this, wr, renderables);
|
renderables = modifier.ModifyRender(this, wr, renderables);
|
||||||
return renderables;
|
return renderables;
|
||||||
}
|
}
|
||||||
|
|
||||||
IEnumerable<IRenderable> Renderables(WorldRenderer wr)
|
IEnumerable<IRenderable> Renderables(WorldRenderer wr)
|
||||||
{
|
{
|
||||||
foreach (var render in TraitsImplementing<IRender>())
|
foreach (var render in traitsImplementingRender)
|
||||||
foreach (var renderable in render.Render(this, wr))
|
foreach (var renderable in render.Render(this, wr))
|
||||||
yield return renderable;
|
yield return renderable;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user