Added a scale slider for sprites in the AssetBrowser

This commit is contained in:
penev92
2021-02-07 21:23:45 +02:00
committed by Matthias Mailänder
parent 40c728269c
commit 7a9e0863d6
4 changed files with 48 additions and 9 deletions

View File

@@ -17,7 +17,8 @@ namespace OpenRA.Mods.Common.Widgets
{
public class SpriteWidget : Widget
{
public Func<float> GetScale = () => 1f;
public float Scale = 1f;
public Func<float> GetScale;
public string Palette = "chrome";
public Func<string> GetPalette;
public Func<Sprite> GetSprite;
@@ -28,6 +29,7 @@ namespace OpenRA.Mods.Common.Widgets
public SpriteWidget(WorldRenderer worldRenderer)
{
GetPalette = () => Palette;
GetScale = () => Scale;
WorldRenderer = worldRenderer;
}
@@ -59,10 +61,11 @@ namespace OpenRA.Mods.Common.Widgets
if (sprite == null || palette == null)
return;
if (sprite != cachedSprite)
if (sprite != cachedSprite || scale != cachedScale)
{
offset = 0.5f * (new float2(RenderBounds.Size) - sprite.Size.XY);
offset = 0.5f * (new float2(RenderBounds.Size) - scale * sprite.Size.XY);
cachedSprite = sprite;
cachedScale = scale;
}
if (palette != cachedPalette)
@@ -71,12 +74,6 @@ namespace OpenRA.Mods.Common.Widgets
cachedPalette = palette;
}
if (scale != cachedScale)
{
offset *= scale;
cachedScale = scale;
}
Game.Renderer.EnableAntialiasingFilter();
Game.Renderer.SpriteRenderer.DrawSprite(sprite, pr, RenderOrigin + offset, scale);
Game.Renderer.DisableAntialiasingFilter();