From 32121a38f499d2989d4779ae2de1a83a8ffbc87a Mon Sep 17 00:00:00 2001 From: dnqbob Date: Fri, 12 Jan 2024 21:29:00 +0800 Subject: [PATCH] Fix Hovers desync caused by changing 'WorldVisualOffset' in renderer. --- OpenRA.Mods.Common/Traits/Render/Hovers.cs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/OpenRA.Mods.Common/Traits/Render/Hovers.cs b/OpenRA.Mods.Common/Traits/Render/Hovers.cs index fafb6716c2..e061205167 100644 --- a/OpenRA.Mods.Common/Traits/Render/Hovers.cs +++ b/OpenRA.Mods.Common/Traits/Render/Hovers.cs @@ -94,12 +94,6 @@ namespace OpenRA.Mods.Common.Traits.Render WorldVisualOffset = new WVec(0, 0, fallTickHeight * fallTicks); } else - ticks++; - } - - IEnumerable IRenderModifier.ModifyRender(Actor self, WorldRenderer wr, IEnumerable r) - { - if (!IsTraitDisabled) { var visualOffset = self.World.Map.DistanceAboveTerrain(self.CenterPosition) >= info.MinHoveringAltitude ? new WAngle(ticks % (info.Ticks * 4) * stepPercentage).Sin() : 0; @@ -110,8 +104,12 @@ namespace OpenRA.Mods.Common.Traits.Render currentHeight = Math.Min(WorldVisualOffset.Z + info.InitialHeight.Length / info.RiseTicks, currentHeight); WorldVisualOffset = new WVec(0, 0, currentHeight); + ticks++; } + } + IEnumerable IRenderModifier.ModifyRender(Actor self, WorldRenderer wr, IEnumerable r) + { return r.Select(a => a.OffsetBy(WorldVisualOffset)); }