From 6527ab21d7f62ede715b1bba2a872fc020c8fdfe Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sat, 1 Nov 2014 11:56:34 +1300 Subject: [PATCH] Improve voxel shadow rendering. --- OpenRA.Mods.Common/Graphics/VoxelRenderable.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/OpenRA.Mods.Common/Graphics/VoxelRenderable.cs b/OpenRA.Mods.Common/Graphics/VoxelRenderable.cs index 24c0b76655..259fb1c4d3 100644 --- a/OpenRA.Mods.Common/Graphics/VoxelRenderable.cs +++ b/OpenRA.Mods.Common/Graphics/VoxelRenderable.cs @@ -100,8 +100,13 @@ namespace OpenRA.Mods.Common.Graphics public void Render(WorldRenderer wr) { + // TODO: This is a temporary workaround until we have a proper ramp-aware height calculation + var groundPos = wr.world.Map.CenterOfCell(wr.world.Map.CellContaining(pos)); + + var ts = Game.modData.Manifest.TileSize; + var groundZ = ts.Height * (groundPos.Z - pos.Z) / 1024f; + var pxOrigin = wr.ScreenPosition(pos); - var groundZ = 0.5f*(pxOrigin.Y - wr.ScreenZPosition(pos, 0)); var shadowOrigin = pxOrigin - groundZ*(new float2(renderProxy.ShadowDirection, 1)); var psb = renderProxy.ProjectedShadowBounds;