Use IRender.ScreenBounds in ScreenMap.

Traits are now required to trigger a ScreenMap update whenever they
believe that their ScreenBounds have changed.
This commit is contained in:
Paul Chote
2017-12-09 19:09:17 +00:00
committed by reaperrr
parent fa65fef4d1
commit 8fcc80b05a
8 changed files with 141 additions and 24 deletions

View File

@@ -127,6 +127,7 @@ namespace OpenRA.Mods.Common.Traits
void ITickRender.TickRender(WorldRenderer wr, Actor self)
{
IRenderable[] renderables = null;
Rectangle[] bounds = null;
for (var playerIndex = 0; playerIndex < frozenStates.Count; playerIndex++)
{
var frozen = frozenStates[playerIndex].FrozenActor;
@@ -137,11 +138,15 @@ namespace OpenRA.Mods.Common.Traits
{
isRendering = true;
renderables = self.Render(wr).ToArray();
bounds = self.ScreenBounds(wr).ToArray();
isRendering = false;
}
frozen.NeedRenderables = false;
frozen.Renderables = renderables;
frozen.ScreenBounds = bounds;
self.World.ScreenMap.AddOrUpdate(self.World.Players[playerIndex], frozen);
}
}