Calculate actor preview bounds directly.

This commit is contained in:
Paul Chote
2017-12-22 18:12:55 +00:00
committed by RoosterDragon
parent 7bf3d5d7f6
commit 2794b14f52
2 changed files with 6 additions and 11 deletions

View File

@@ -57,16 +57,13 @@ namespace OpenRA.Mods.Common.Widgets
PreviewOffset = int2.Zero;
IdealPreviewSize = int2.Zero;
var r = preview
.SelectMany(p => p.Render(worldRenderer, WPos.Zero))
.OrderBy(WorldRenderer.RenderableScreenZPositionComparisonKey)
.Select(rr => rr.PrepareRender(worldRenderer));
var r = preview.SelectMany(p => p.ScreenBounds(worldRenderer, WPos.Zero));
if (r.Any())
{
var b = r.First().ScreenBounds(worldRenderer);
var b = r.First();
foreach (var rr in r.Skip(1))
b = Rectangle.Union(b, rr.ScreenBounds(worldRenderer));
b = Rectangle.Union(b, rr);
IdealPreviewSize = new int2(b.Width, b.Height);
PreviewOffset = -new int2(b.Left, b.Top) - IdealPreviewSize / 2;