mirror of
https://github.com/ppy/osu.git
synced 2025-01-14 19:22:56 +08:00
Fix selection on the edge of blueprints (in the new inflation area) failing
This commit is contained in:
parent
16d94b4ea2
commit
6c61c5f4a8
@ -32,6 +32,18 @@ namespace osu.Game.Overlays.SkinEditor
|
||||
|
||||
protected override bool ShouldBeAlive => drawable.IsAlive && Item.IsPresent;
|
||||
|
||||
private Quad drawableQuad;
|
||||
|
||||
public override Quad ScreenSpaceDrawQuad => drawableQuad;
|
||||
public override Quad SelectionQuad => drawable.ScreenSpaceDrawQuad;
|
||||
|
||||
public override bool Contains(Vector2 screenSpacePos) => drawableQuad.Contains(screenSpacePos);
|
||||
|
||||
public override Vector2 ScreenSpaceSelectionPoint => drawable.ToScreenSpace(drawable.OriginPosition);
|
||||
|
||||
protected override bool ReceivePositionalInputAtSubTree(Vector2 screenSpacePos) =>
|
||||
drawableQuad.Contains(screenSpacePos);
|
||||
|
||||
public SkinBlueprint(ISerialisableDrawable component)
|
||||
: base(component)
|
||||
{
|
||||
@ -44,7 +56,6 @@ namespace osu.Game.Overlays.SkinEditor
|
||||
{
|
||||
box = new Container
|
||||
{
|
||||
Padding = new MarginPadding(-SkinSelectionHandler.INFLATE_SIZE),
|
||||
Children = new Drawable[]
|
||||
{
|
||||
outlineBox = new Container
|
||||
@ -107,28 +118,21 @@ namespace osu.Game.Overlays.SkinEditor
|
||||
anchorOriginVisualiser.FadeTo(IsSelected ? 1 : 0, 200, Easing.OutQuint);
|
||||
}
|
||||
|
||||
private Quad drawableQuad;
|
||||
|
||||
public override Quad ScreenSpaceDrawQuad => drawableQuad;
|
||||
|
||||
protected override void Update()
|
||||
{
|
||||
base.Update();
|
||||
|
||||
drawableQuad = drawable.ScreenSpaceDrawQuad;
|
||||
var quad = ToLocalSpace(drawable.ScreenSpaceDrawQuad);
|
||||
drawableQuad = drawable.ToScreenSpace(
|
||||
drawable.DrawRectangle
|
||||
.Inflate(SkinSelectionHandler.INFLATE_SIZE));
|
||||
|
||||
box.Position = drawable.ToSpaceOfOtherDrawable(Vector2.Zero, this);
|
||||
box.Size = quad.Size;
|
||||
var localSpaceQuad = ToLocalSpace(drawableQuad);
|
||||
|
||||
box.Position = localSpaceQuad.TopLeft;
|
||||
box.Size = localSpaceQuad.Size;
|
||||
box.Rotation = drawable.Rotation;
|
||||
box.Scale = new Vector2(MathF.Sign(drawable.Scale.X), MathF.Sign(drawable.Scale.Y));
|
||||
}
|
||||
|
||||
public override bool ReceivePositionalInputAt(Vector2 screenSpacePos) => drawable.ReceivePositionalInputAt(screenSpacePos);
|
||||
|
||||
public override Vector2 ScreenSpaceSelectionPoint => drawable.ToScreenSpace(drawable.OriginPosition);
|
||||
|
||||
public override Quad SelectionQuad => drawable.ScreenSpaceDrawQuad;
|
||||
}
|
||||
|
||||
internal partial class AnchorOriginVisualiser : CompositeDrawable
|
||||
|
Loading…
Reference in New Issue
Block a user