diff --git a/OpenRA.Game/Graphics/ContrailRenderable.cs b/OpenRA.Game/Graphics/ContrailRenderable.cs index bfd3f2c8b7..ed87b44026 100644 --- a/OpenRA.Game/Graphics/ContrailRenderable.cs +++ b/OpenRA.Game/Graphics/ContrailRenderable.cs @@ -15,6 +15,8 @@ namespace OpenRA.Graphics { public struct ContrailRenderable : IRenderable { + public int Length { get { return trail.Length; } } + readonly World world; // Store trail positions in a circular buffer diff --git a/OpenRA.Mods.RA/Effects/ContrailFader.cs b/OpenRA.Mods.RA/Effects/ContrailFader.cs index 9957a02bd1..04f65ac001 100755 --- a/OpenRA.Mods.RA/Effects/ContrailFader.cs +++ b/OpenRA.Mods.RA/Effects/ContrailFader.cs @@ -18,6 +18,7 @@ namespace OpenRA.Mods.RA.Effects { WPos pos; ContrailRenderable trail; + int ticks; public ContrailFader(WPos pos, ContrailRenderable trail) { @@ -27,6 +28,9 @@ namespace OpenRA.Mods.RA.Effects public void Tick(World world) { + if (ticks++ == trail.Length) + world.AddFrameEndTask(w => w.Remove(this)); + trail.Update(pos); }