Add keyboard support for nudging selected scene items
- Issue MatterHackers/MCCentral#5655 [Feature Request] Move objects with keyboard
This commit is contained in:
parent
23ec362e99
commit
41d6e0f647
1 changed files with 73 additions and 6 deletions
|
|
@ -3441,8 +3441,15 @@ Support and tutorials:
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// move or rotate view left
|
if (view3D.sceneContext.Scene.SelectedItem is IObject3D object3D)
|
||||||
Offset3DView(view3D, new Vector2(-offsetDist, 0), arrowKeyOperation);
|
{
|
||||||
|
NudgeItem(view3D, object3D, ArrowDirection.Left, keyEvent);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// move or rotate view left
|
||||||
|
Offset3DView(view3D, new Vector2(-offsetDist, 0), arrowKeyOperation);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
keyEvent.Handled = true;
|
keyEvent.Handled = true;
|
||||||
|
|
@ -3459,8 +3466,15 @@ Support and tutorials:
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// move or rotate view right
|
if (view3D.sceneContext.Scene.SelectedItem is IObject3D object3D)
|
||||||
Offset3DView(view3D, new Vector2(offsetDist, 0), arrowKeyOperation);
|
{
|
||||||
|
NudgeItem(view3D, object3D, ArrowDirection.Right, keyEvent);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// move or rotate view right
|
||||||
|
Offset3DView(view3D, new Vector2(offsetDist, 0), arrowKeyOperation);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
keyEvent.Handled = true;
|
keyEvent.Handled = true;
|
||||||
|
|
@ -3476,7 +3490,14 @@ Support and tutorials:
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Offset3DView(view3D, new Vector2(0, offsetDist), arrowKeyOperation);
|
if (view3D.sceneContext.Scene.SelectedItem is IObject3D object3D)
|
||||||
|
{
|
||||||
|
NudgeItem(view3D, object3D, ArrowDirection.Up, keyEvent);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Offset3DView(view3D, new Vector2(0, offsetDist), arrowKeyOperation);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
keyEvent.Handled = true;
|
keyEvent.Handled = true;
|
||||||
|
|
@ -3492,7 +3513,14 @@ Support and tutorials:
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Offset3DView(view3D, new Vector2(0, -offsetDist), arrowKeyOperation);
|
if (view3D.sceneContext.Scene.SelectedItem is IObject3D object3D)
|
||||||
|
{
|
||||||
|
NudgeItem(view3D, object3D, ArrowDirection.Down, keyEvent);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Offset3DView(view3D, new Vector2(0, -offsetDist), arrowKeyOperation);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
keyEvent.Handled = true;
|
keyEvent.Handled = true;
|
||||||
|
|
@ -3597,6 +3625,45 @@ Support and tutorials:
|
||||||
return systemWindow;
|
return systemWindow;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void NudgeItem(View3DWidget view3D, IObject3D object3D, ArrowDirection arrowDirection, KeyEventArgs keyEvent)
|
||||||
|
{
|
||||||
|
// TODO: analyze the view and adjust movements to be relative to the current perspective
|
||||||
|
//
|
||||||
|
// Naive movements in Identity space
|
||||||
|
switch (arrowDirection)
|
||||||
|
{
|
||||||
|
case ArrowDirection.Left:
|
||||||
|
object3D.Translate(-view3D.InteractionLayer.SnapGridDistance, 0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ArrowDirection.Right:
|
||||||
|
object3D.Translate(view3D.InteractionLayer.SnapGridDistance, 0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ArrowDirection.Up:
|
||||||
|
if (keyEvent.Control)
|
||||||
|
{
|
||||||
|
object3D.Translate(0, 0, view3D.InteractionLayer.SnapGridDistance);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
object3D.Translate(0, view3D.InteractionLayer.SnapGridDistance);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ArrowDirection.Down:
|
||||||
|
if (keyEvent.Control)
|
||||||
|
{
|
||||||
|
object3D.Translate(0, 0, -view3D.InteractionLayer.SnapGridDistance);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
object3D.Translate(0, -view3D.InteractionLayer.SnapGridDistance);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static void Offset3DView(View3DWidget view3D, Vector2 offset, TrackBallTransformType operation)
|
private static void Offset3DView(View3DWidget view3D, Vector2 offset, TrackBallTransformType operation)
|
||||||
{
|
{
|
||||||
var center = view3D.TrackballTumbleWidget.LocalBounds.Center;
|
var center = view3D.TrackballTumbleWidget.LocalBounds.Center;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue