Only render shroud/ore that is in the current viewport
This commit is contained in:
@@ -158,5 +158,14 @@ namespace OpenRA.Graphics
|
|||||||
if (localPlayer.Shroud.Disabled) return null;
|
if (localPlayer.Shroud.Disabled) return null;
|
||||||
return localPlayer.Shroud.Bounds;
|
return localPlayer.Shroud.Bounds;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Rectangle ViewBounds()
|
||||||
|
{
|
||||||
|
int2 boundary = new int2(3,3); // Add a curtain of cells around the viewport to account for rounding errors
|
||||||
|
var origin = new int2((int)(scrollPosition.X/Game.CellSize), (int)(scrollPosition.Y/Game.CellSize));
|
||||||
|
var tl = ViewToWorld(origin).ToInt2() - boundary;
|
||||||
|
var br = ViewToWorld(origin + new int2(Width, Height)).ToInt2() + boundary;
|
||||||
|
return Rectangle.FromLTRB(tl.X, tl.Y, br.X, br.Y);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -145,7 +145,7 @@ namespace OpenRA
|
|||||||
}
|
}
|
||||||
|
|
||||||
var clipRect = Bounds.HasValue ? Rectangle.Intersect(Bounds.Value, map.Bounds) : map.Bounds;
|
var clipRect = Bounds.HasValue ? Rectangle.Intersect(Bounds.Value, map.Bounds) : map.Bounds;
|
||||||
|
clipRect = Rectangle.Intersect(Game.viewport.ViewBounds(), clipRect);
|
||||||
var miny = clipRect.Top;
|
var miny = clipRect.Top;
|
||||||
var maxy = clipRect.Bottom;
|
var maxy = clipRect.Bottom;
|
||||||
var minx = clipRect.Left;
|
var minx = clipRect.Left;
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ namespace OpenRA.Traits
|
|||||||
var cliprect = Game.viewport.ShroudBounds().HasValue
|
var cliprect = Game.viewport.ShroudBounds().HasValue
|
||||||
? Rectangle.Intersect(Game.viewport.ShroudBounds().Value, world.Map.Bounds) : world.Map.Bounds;
|
? Rectangle.Intersect(Game.viewport.ShroudBounds().Value, world.Map.Bounds) : world.Map.Bounds;
|
||||||
|
|
||||||
|
cliprect = Rectangle.Intersect(Game.viewport.ViewBounds(), cliprect);
|
||||||
|
|
||||||
var minx = cliprect.Left;
|
var minx = cliprect.Left;
|
||||||
var maxx = cliprect.Right;
|
var maxx = cliprect.Right;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user