Change DrawSprite calls to provide scales instead of sizes.

This allows us to remove a hacky workaround for calculating
depth offsets when sprites have size.Z == 0.
This commit is contained in:
Paul Chote
2021-07-24 20:56:51 +01:00
committed by reaperrr
parent 8e94e1d5ec
commit 70892a6661
12 changed files with 46 additions and 64 deletions

View File

@@ -170,7 +170,7 @@ namespace OpenRA.Mods.Common.Graphics
a *= -1;
wrsr.DrawSprite(renderProxy.ShadowSprite, sa, sb, sc, sd, t, a);
wrsr.DrawSprite(renderProxy.Sprite, pxOrigin - 0.5f * renderProxy.Sprite.Size, renderProxy.Sprite.Size, t, a);
wrsr.DrawSprite(renderProxy.Sprite, pxOrigin - 0.5f * renderProxy.Sprite.Size, 1f, t, a);
}
public void RenderDebugGeometry(WorldRenderer wr)

View File

@@ -98,7 +98,7 @@ namespace OpenRA.Mods.Common.Graphics
var sb = pxOrigin + psb[2];
var sc = pxOrigin + psb[1];
var sd = pxOrigin + psb[3];
Game.Renderer.RgbaSpriteRenderer.DrawSprite(renderProxy.ShadowSprite, sa, sb, sc, sd);
Game.Renderer.RgbaSpriteRenderer.DrawSprite(renderProxy.ShadowSprite, sa, sb, sc, sd, float3.Ones, 1f);
Game.Renderer.RgbaSpriteRenderer.DrawSprite(renderProxy.Sprite, pxOrigin - 0.5f * renderProxy.Sprite.Size);
}

View File

@@ -77,9 +77,8 @@ namespace OpenRA.Mods.Common.Widgets
cachedScale = scale;
}
var size = new float2(sprite.Size.X * scale, sprite.Size.Y * scale);
Game.Renderer.EnableAntialiasingFilter();
Game.Renderer.SpriteRenderer.DrawSprite(sprite, RenderOrigin + offset, pr, size);
Game.Renderer.SpriteRenderer.DrawSprite(sprite, pr, RenderOrigin + offset, scale);
Game.Renderer.DisableAntialiasingFilter();
}
}

View File

@@ -48,17 +48,19 @@ namespace OpenRA.Mods.Common.Widgets
public static void DrawSprite(Sprite s, float2 pos, Size size)
{
Game.Renderer.RgbaSpriteRenderer.DrawSprite(s, pos, new float2(size));
var scale = new float3(size.Width / s.Size.X, size.Height / s.Size.Y, 1f);
Game.Renderer.RgbaSpriteRenderer.DrawSprite(s, pos, scale);
}
public static void DrawSprite(Sprite s, float2 pos, float2 size)
{
Game.Renderer.RgbaSpriteRenderer.DrawSprite(s, pos, size);
var scale = new float3(size.X / s.Size.X, size.Y / s.Size.Y, 1f);
Game.Renderer.RgbaSpriteRenderer.DrawSprite(s, pos, scale);
}
public static void DrawSpriteCentered(Sprite s, PaletteReference p, float2 pos, float scale = 1f)
{
Game.Renderer.SpriteRenderer.DrawSprite(s, pos - 0.5f * scale * s.Size, p, scale * s.Size);
Game.Renderer.SpriteRenderer.DrawSprite(s, p, pos - 0.5f * scale * s.Size, scale);
}
public static void DrawPanel(string collection, Rectangle bounds)