Calculate actor preview bounds directly.
This commit is contained in:
committed by
RoosterDragon
parent
7bf3d5d7f6
commit
2794b14f52
@@ -80,15 +80,13 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
// Bounds are fixed from the initial render.
|
// Bounds are fixed from the initial render.
|
||||||
// If this is a problem, then we may need to fetch the area from somewhere else
|
// If this is a problem, then we may need to fetch the area from somewhere else
|
||||||
var r = previews
|
var r = previews.SelectMany(p => p.ScreenBounds(worldRenderer, CenterPosition));
|
||||||
.SelectMany(p => p.Render(worldRenderer, CenterPosition))
|
|
||||||
.Select(rr => rr.PrepareRender(worldRenderer));
|
|
||||||
|
|
||||||
if (r.Any())
|
if (r.Any())
|
||||||
{
|
{
|
||||||
Bounds = r.First().ScreenBounds(worldRenderer);
|
Bounds = r.First();
|
||||||
foreach (var rr in r.Skip(1))
|
foreach (var rr in r.Skip(1))
|
||||||
Bounds = Rectangle.Union(Bounds, rr.ScreenBounds(worldRenderer));
|
Bounds = Rectangle.Union(Bounds, rr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -57,16 +57,13 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
PreviewOffset = int2.Zero;
|
PreviewOffset = int2.Zero;
|
||||||
IdealPreviewSize = int2.Zero;
|
IdealPreviewSize = int2.Zero;
|
||||||
|
|
||||||
var r = preview
|
var r = preview.SelectMany(p => p.ScreenBounds(worldRenderer, WPos.Zero));
|
||||||
.SelectMany(p => p.Render(worldRenderer, WPos.Zero))
|
|
||||||
.OrderBy(WorldRenderer.RenderableScreenZPositionComparisonKey)
|
|
||||||
.Select(rr => rr.PrepareRender(worldRenderer));
|
|
||||||
|
|
||||||
if (r.Any())
|
if (r.Any())
|
||||||
{
|
{
|
||||||
var b = r.First().ScreenBounds(worldRenderer);
|
var b = r.First();
|
||||||
foreach (var rr in r.Skip(1))
|
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);
|
IdealPreviewSize = new int2(b.Width, b.Height);
|
||||||
PreviewOffset = -new int2(b.Left, b.Top) - IdealPreviewSize / 2;
|
PreviewOffset = -new int2(b.Left, b.Top) - IdealPreviewSize / 2;
|
||||||
|
|||||||
Reference in New Issue
Block a user