diff --git a/OpenRA.Game/Traits/World/ScreenShaker.cs b/OpenRA.Game/Traits/World/ScreenShaker.cs index efd0aeffa5..fbfda7f741 100644 --- a/OpenRA.Game/Traits/World/ScreenShaker.cs +++ b/OpenRA.Game/Traits/World/ScreenShaker.cs @@ -11,16 +11,20 @@ using System; using System.Collections.Generic; using System.Linq; +using OpenRA.Graphics; namespace OpenRA.Traits { public class ScreenShakerInfo : TraitInfo { } - public class ScreenShaker : ITick + public class ScreenShaker : ITick, IWorldLoaded { + WorldRenderer worldRenderer; List shakeEffects = new List(); int ticks = 0; + public void WorldLoaded(World w, WorldRenderer wr) { worldRenderer = wr; } + public void Tick(Actor self) { if (shakeEffects.Any()) @@ -46,7 +50,7 @@ namespace OpenRA.Traits float GetIntensity() { - var cp = ((PPos)Game.viewport.CenterLocation.ToInt2()).ToWPos(0); + var cp = worldRenderer.Position(Game.viewport.CenterLocation.ToInt2()); var intensity = 100 * 1024 * 1024 * shakeEffects.Sum( e => (float)e.Intensity / (e.Position - cp).LengthSquared);