diff --git a/OpenRA.Game/Graphics/Viewport.cs b/OpenRA.Game/Graphics/Viewport.cs index ead45384ff..2396b59b77 100644 --- a/OpenRA.Game/Graphics/Viewport.cs +++ b/OpenRA.Game/Graphics/Viewport.cs @@ -139,12 +139,13 @@ namespace OpenRA.Graphics scrollPosition = this.NormalizeScrollPosition((avgPos - .5f * new float2(Width, Height))); } - public Rectangle? ShroudBounds() + public Rectangle ShroudBounds( World world ) { - var localPlayer = Game.world.LocalPlayer; - if (localPlayer == null) return null; - if (localPlayer.Shroud.Disabled) return null; - return localPlayer.Shroud.Bounds; + var localPlayer = world.LocalPlayer; + if( localPlayer == null ) return world.Map.Bounds; + if( localPlayer.Shroud.Disabled ) return world.Map.Bounds; + if( !localPlayer.Shroud.Bounds.HasValue ) return world.Map.Bounds; + return Rectangle.Intersect( localPlayer.Shroud.Bounds.Value, world.Map.Bounds ); } public Rectangle ViewBounds() diff --git a/OpenRA.Game/Traits/World/BibLayer.cs b/OpenRA.Game/Traits/World/BibLayer.cs index 755f8b0e88..951b89a2ff 100755 --- a/OpenRA.Game/Traits/World/BibLayer.cs +++ b/OpenRA.Game/Traits/World/BibLayer.cs @@ -72,10 +72,8 @@ namespace OpenRA.Traits } public void Render( WorldRenderer wr ) - { - var cliprect = Game.viewport.ShroudBounds().HasValue - ? Rectangle.Intersect(Game.viewport.ShroudBounds().Value, world.Map.Bounds) : world.Map.Bounds; - + { + var cliprect = Game.viewport.ShroudBounds( world ); cliprect = Rectangle.Intersect(Game.viewport.ViewBounds(), cliprect); foreach (var kv in tiles) { diff --git a/OpenRA.Game/Traits/World/ResourceLayer.cs b/OpenRA.Game/Traits/World/ResourceLayer.cs index d1f0d0d95a..87c1cbbf0c 100644 --- a/OpenRA.Game/Traits/World/ResourceLayer.cs +++ b/OpenRA.Game/Traits/World/ResourceLayer.cs @@ -26,9 +26,7 @@ namespace OpenRA.Traits public void Render( WorldRenderer wr ) { - var cliprect = Game.viewport.ShroudBounds().HasValue - ? Rectangle.Intersect(Game.viewport.ShroudBounds().Value, world.Map.Bounds) : world.Map.Bounds; - + var cliprect = Game.viewport.ShroudBounds( world ); cliprect = Rectangle.Intersect(Game.viewport.ViewBounds(), cliprect); var minx = cliprect.Left; diff --git a/OpenRA.Mods.RA/World/SmudgeLayer.cs b/OpenRA.Mods.RA/World/SmudgeLayer.cs index 8a05cae5b4..854a25d5b4 100755 --- a/OpenRA.Mods.RA/World/SmudgeLayer.cs +++ b/OpenRA.Mods.RA/World/SmudgeLayer.cs @@ -75,8 +75,7 @@ namespace OpenRA.Mods.RA public void Render( WorldRenderer wr ) { - var cliprect = Game.viewport.ShroudBounds().HasValue - ? Rectangle.Intersect(Game.viewport.ShroudBounds().Value, world.Map.Bounds) : world.Map.Bounds; + var cliprect = Game.viewport.ShroudBounds( world ); cliprect = Rectangle.Intersect(Game.viewport.ViewBounds(), cliprect); foreach (var kv in tiles) {