improve selection box rotation UX

This commit is contained in:
Graham Johnson 2020-12-13 07:58:58 -05:00
parent 31ae79a140
commit 7d2b77cdbd
1 changed files with 10 additions and 1 deletions

View File

@ -191,7 +191,7 @@ private void addRotationComponents()
{
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 @@ private void addDragHandle(Anchor anchor) => AddInternal(new SelectionBoxDragHan
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)