//Mouse down public void OnMouseDown(Vector2 mousePosition, Matrix4X4 screenToLocal, TrackBallTransformType trackType = TrackBallTransformType.Rotation) { //if (currentTrackingType == MouseDownType.None) { CurrentTrackingType = trackType; switch (CurrentTrackingType) { case TrackBallTransformType.Rotation: mouseDownPosition = mousePosition; break; case TrackBallTransformType.Translation: localToScreenTransform = Matrix4X4.Invert(screenToLocal); lastTranslationMousePosition = mousePosition; break; case TrackBallTransformType.Scale: lastScaleMousePosition = mousePosition; break; default: throw new NotImplementedException(); } } }
private static void Offset3DView(View3DWidget view3D, Vector2 offset, TrackBallTransformType operation) { var center = view3D.TrackballTumbleWidget.LocalBounds.Center; view3D.TrackballTumbleWidget.TrackBallController.OnMouseDown(center, Matrix4X4.Identity, operation); view3D.TrackballTumbleWidget.TrackBallController.OnMouseMove(center + offset); view3D.TrackballTumbleWidget.TrackBallController.OnMouseUp(); view3D.TrackballTumbleWidget.Invalidate(); }
private static void Offset3DView(View3DWidget view3D, Vector2 offset, TrackBallTransformType operation) { var center = view3D.TrackballTumbleWidget.LocalBounds.Center; var oldState = view3D.TrackballTumbleWidget.TransformState; view3D.TrackballTumbleWidget.TransformState = operation; var mouseEvent = new MouseEventArgs(MouseButtons.Left, 1, center.X, center.Y, 0); view3D.TrackballTumbleWidget.OnMouseDown(mouseEvent); mouseEvent = new MouseEventArgs(mouseEvent, center.X + offset.X, center.Y + offset.Y); view3D.TrackballTumbleWidget.OnMouseMove(mouseEvent); view3D.TrackballTumbleWidget.OnMouseUp(mouseEvent); view3D.TrackballTumbleWidget.TransformState = oldState; view3D.TrackballTumbleWidget.Invalidate(); }
public void OnMouseUp() { switch (CurrentTrackingType) { case TrackBallTransformType.Rotation: break; case TrackBallTransformType.Translation: //currentTranslationMatrix = Matrix4X4.Identity; break; case TrackBallTransformType.Scale: break; default: throw new NotImplementedException(); } CurrentTrackingType = TrackBallTransformType.None; }