mirror of
https://github.com/ppy/osu
synced 2024-12-11 17:42:28 +00:00
improve selection box rotation UX
This commit is contained in:
parent
31ae79a140
commit
7d2b77cdbd
@ -191,7 +191,7 @@ namespace osu.Game.Screens.Edit.Compose.Components
|
||||
{
|
||||
Anchor = Anchor.TopCentre,
|
||||
Y = -separation,
|
||||
HandleDrag = e => OnRotation?.Invoke(e.Delta.X),
|
||||
HandleDrag = e => OnRotation?.Invoke(convertDragEventToAngleOfRotation(e)),
|
||||
OperationStarted = operationStarted,
|
||||
OperationEnded = operationEnded
|
||||
}
|
||||
@ -242,6 +242,15 @@ namespace osu.Game.Screens.Edit.Compose.Components
|
||||
|
||||
private int activeOperations;
|
||||
|
||||
private float convertDragEventToAngleOfRotation(DragEvent e)
|
||||
{
|
||||
// Adjust coordinate system to the center of SelectionBox
|
||||
float startAngle = MathF.Atan2(e.LastMousePosition.Y - DrawHeight / 2, e.LastMousePosition.X - DrawWidth / 2);
|
||||
float endAngle = MathF.Atan2(e.MousePosition.Y - DrawHeight / 2, e.MousePosition.X - DrawWidth / 2);
|
||||
|
||||
return (endAngle - startAngle) * 180 / MathF.PI;
|
||||
}
|
||||
|
||||
private void operationEnded()
|
||||
{
|
||||
if (--activeOperations == 0)
|
||||
|
Loading…
Reference in New Issue
Block a user