Use nested containers for shadow

This commit is contained in:
Dean Herbert
2017-08-07 09:50:04 +09:00
parent de3b65e1fa
commit 8941c8658c

View File

@ -17,21 +17,28 @@ namespace osu.Game.Graphics
private readonly Sprite spriteShadow; private readonly Sprite spriteShadow;
private readonly Sprite spriteMain; private readonly Sprite spriteMain;
private readonly Container shadowVisibility;
public SpriteIcon() public SpriteIcon()
{ {
spriteShadow = new Sprite InternalChildren = new Drawable[]
{
shadowVisibility = new Container
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
RelativeSizeAxes = Axes.Both,
Child = spriteShadow = new Sprite
{ {
Anchor = Anchor.Centre, Anchor = Anchor.Centre,
Origin = Anchor.Centre, Origin = Anchor.Centre,
RelativeSizeAxes = Axes.Both, RelativeSizeAxes = Axes.Both,
FillMode = FillMode.Fit, FillMode = FillMode.Fit,
Depth = 2,
Y = 2, Y = 2,
Colour = new Color4(0f, 0f, 0f, 0.2f), Colour = new Color4(0f, 0f, 0f, 0.2f),
}; },
Alpha = 0,
InternalChildren = new[] },
{
spriteMain = new Sprite spriteMain = new Sprite
{ {
Anchor = Anchor.Centre, Anchor = Anchor.Centre,
@ -81,12 +88,7 @@ namespace osu.Game.Graphics
get { return spriteShadow.IsPresent; } get { return spriteShadow.IsPresent; }
set set
{ {
if (value == (spriteShadow.IsAlive && spriteShadow.IsLoaded)) return; shadowVisibility.Alpha = value ? 1 : 0;
if (value)
AddInternal(spriteShadow);
else
RemoveInternal(spriteShadow);
} }
} }