Fix Hovers desync caused by changing 'WorldVisualOffset' in renderer.

This commit is contained in:
dnqbob
2024-01-12 21:29:00 +08:00
committed by Gustas
parent 2fde98a0d1
commit 32121a38f4

View File

@@ -94,12 +94,6 @@ namespace OpenRA.Mods.Common.Traits.Render
WorldVisualOffset = new WVec(0, 0, fallTickHeight * fallTicks);
}
else
ticks++;
}
IEnumerable<IRenderable> IRenderModifier.ModifyRender(Actor self, WorldRenderer wr, IEnumerable<IRenderable> 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<IRenderable> IRenderModifier.ModifyRender(Actor self, WorldRenderer wr, IEnumerable<IRenderable> r)
{
return r.Select(a => a.OffsetBy(WorldVisualOffset));
}