Add ScreenBounds method to IRender interface.

This method is expected to return Rectangles that cover
the region where Renderables returned by Render may exist.
This commit is contained in:
Paul Chote
2017-12-05 17:40:45 +00:00
committed by reaperrr
parent 46f6263061
commit 86bfe28ade
15 changed files with 133 additions and 5 deletions

View File

@@ -10,6 +10,7 @@
#endregion
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using OpenRA.Graphics;
using OpenRA.Mods.Common;
@@ -98,6 +99,14 @@ namespace OpenRA.Mods.Cnc.Traits.Render
}
}
IEnumerable<Rectangle> IRender.ScreenBounds(Actor self, WorldRenderer wr)
{
var pos = self.CenterPosition;
foreach (var p in previews.Values.SelectMany(p => p))
foreach (var b in p.ScreenBounds(wr, pos))
yield return b;
}
void INotifyPassengerEntered.OnPassengerEntered(Actor self, Actor passenger)
{
if (info.DisplayTypes.Contains(passenger.Trait<Passenger>().Info.CargoType))