From 4ae92a5c22ffe883318fba89984e0e9711718592 Mon Sep 17 00:00:00 2001 From: reaperrr Date: Sun, 17 Sep 2017 22:35:50 +0200 Subject: [PATCH] Only add partitioned effects to ScreenMap if (current) bounds are valid This serves to avoid adding effect where either width or height is 0. --- OpenRA.Game/Traits/World/ScreenMap.cs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/OpenRA.Game/Traits/World/ScreenMap.cs b/OpenRA.Game/Traits/World/ScreenMap.cs index a72ad2496b..6edce70add 100644 --- a/OpenRA.Game/Traits/World/ScreenMap.cs +++ b/OpenRA.Game/Traits/World/ScreenMap.cs @@ -95,7 +95,8 @@ namespace OpenRA.Traits { var screenPos = worldRenderer.ScreenPxPosition(position); var screenBounds = new Rectangle(screenPos.X - size.Width / 2, screenPos.Y - size.Height / 2, size.Width, size.Height); - partitionedEffects.Add(effect, screenBounds); + if (ValidBounds(screenBounds)) + partitionedEffects.Add(effect, screenBounds); } public void Add(IEffect effect, WPos position, Sprite sprite) @@ -108,7 +109,9 @@ namespace OpenRA.Traits { var screenPos = worldRenderer.ScreenPxPosition(position); var screenBounds = new Rectangle(screenPos.X - size.Width / 2, screenPos.Y - size.Height / 2, size.Width, size.Height); - partitionedEffects.Update(effect, screenBounds); + partitionedEffects.Remove(effect); + if (ValidBounds(screenBounds)) + partitionedEffects.Add(effect, screenBounds); } public void Update(IEffect effect, WPos position, Sprite sprite) @@ -117,9 +120,14 @@ namespace OpenRA.Traits Update(effect, position, size); } - public void Remove(IEffect e) + public void Remove(IEffect effect) { - partitionedEffects.Remove(e); + partitionedEffects.Remove(effect); + } + + bool ValidBounds(Rectangle bounds) + { + return bounds.Width > 0 && bounds.Height > 0; } public IEnumerable FrozenActorsAt(Player viewer, int2 worldPx)