Added a scale slider for sprites in the AssetBrowser
This commit is contained in:
committed by
Matthias Mailänder
parent
40c728269c
commit
7a9e0863d6
@@ -53,6 +53,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
bool isLoadError = false;
|
||||
int currentFrame;
|
||||
WRot modelOrientation;
|
||||
float spriteScale;
|
||||
float modelScale;
|
||||
|
||||
[ObjectCreator.UseCtor]
|
||||
@@ -94,8 +95,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
{
|
||||
spriteWidget.GetSprite = () => currentSprites != null ? currentSprites[currentFrame] : null;
|
||||
currentPalette = spriteWidget.Palette;
|
||||
spriteScale = spriteWidget.Scale;
|
||||
spriteWidget.GetPalette = () => currentPalette;
|
||||
spriteWidget.IsVisible = () => !isVideoLoaded && !isLoadError && currentSprites != null;
|
||||
spriteWidget.GetScale = () => spriteScale;
|
||||
}
|
||||
|
||||
var playerWidget = panel.GetOrNull<VideoPlayerWidget>("PLAYER");
|
||||
@@ -248,6 +251,15 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
prevButton.IsVisible = () => !isVideoLoaded;
|
||||
}
|
||||
|
||||
var spriteScaleSlider = panel.GetOrNull<SliderWidget>("SPRITE_SCALE_SLIDER");
|
||||
if (spriteScaleSlider != null)
|
||||
{
|
||||
spriteScaleSlider.OnChange += x => spriteScale = x;
|
||||
spriteScaleSlider.GetValue = () => spriteScale;
|
||||
spriteScaleSlider.IsVisible = () => !isVideoLoaded;
|
||||
panel.GetOrNull<LabelWidget>("SPRITE_SCALE").IsVisible = () => !isVideoLoaded;
|
||||
}
|
||||
|
||||
var voxelContainer = panel.GetOrNull("VOXEL_SELECTOR");
|
||||
if (voxelContainer != null)
|
||||
voxelContainer.IsVisible = () => currentVoxel != null;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -195,6 +195,21 @@ Container@ASSETBROWSER_PANEL:
|
||||
Height: 25
|
||||
Font: TinyBold
|
||||
Align: Left
|
||||
Label@SPRITE_SCALE:
|
||||
X: 0
|
||||
Y: 32
|
||||
Width: 40
|
||||
Height: 25
|
||||
Font: TinyBold
|
||||
Align: Left
|
||||
Text: Scale
|
||||
Slider@SPRITE_SCALE_SLIDER:
|
||||
X: 35
|
||||
Y: 35
|
||||
Width: 100
|
||||
Height: 20
|
||||
MinimumValue: 0.5
|
||||
MaximumValue: 4
|
||||
Button@CLOSE_BUTTON:
|
||||
Key: escape
|
||||
Y: PARENT_BOTTOM - 1
|
||||
|
||||
@@ -185,6 +185,21 @@ Background@ASSETBROWSER_PANEL:
|
||||
Height: 25
|
||||
Font: TinyBold
|
||||
Align: Left
|
||||
Label@SPRITE_SCALE:
|
||||
X: 0
|
||||
Y: 30
|
||||
Width: 40
|
||||
Height: 25
|
||||
Font: TinyBold
|
||||
Align: Left
|
||||
Text: Scale
|
||||
Slider@SPRITE_SCALE_SLIDER:
|
||||
X: 35
|
||||
Y: 32
|
||||
Width: 100
|
||||
Height: 20
|
||||
MinimumValue: 0.5
|
||||
MaximumValue: 4
|
||||
Container@VOXEL_SELECTOR:
|
||||
X: 226
|
||||
Y: PARENT_BOTTOM - 75
|
||||
|
||||
Reference in New Issue
Block a user