/// <summary> /// Implements the MouseMove event handler for the manipulator /// </summary> /// <param name="sender"></param> /// <param name="mouseEventArgs"></param> protected virtual void MouseMove(object sender, MouseEventArgs mouseEventArgs) { if (!IsEnabled()) { return; } var clickRay = BackgroundPreviewViewModel.GetClickRay(mouseEventArgs); if (clickRay == null) { return; } if (GizmoInAction == null) { HighlightGizmoOnRollOver(clickRay); return; } if (!CanMoveGizmo(GizmoInAction)) { return; } var offset = GizmoInAction.GetOffset(clickRay.GetOriginPoint(), clickRay.GetDirectionVector()); if (offset.Length < 0.01) { return; } newPosition = OnGizmoMoved(GizmoInAction, offset); }
/// <summary> /// Implements the MouseMove event handler for the manipulator /// </summary> /// <param name="sender"></param> /// <param name="mouseEventArgs"></param> protected virtual void MouseMove(object sender, MouseEventArgs mouseEventArgs) { if (!IsEnabled()) { return; } var clickRay = BackgroundPreviewViewModel.GetClickRay(mouseEventArgs); if (clickRay == null) { return; } if (GizmoInAction == null) { HighlightGizmoOnRollOver(clickRay); return; } var offset = GizmoInAction.GetOffset(clickRay.GetOriginPoint(), clickRay.GetDirectionVector()); if (offset.Length < 0.01) { return; } if (originAfterMove != null) { var offsetPos = originAfterMove.Add(offset); originAfterMove.Dispose(); originAfterMove = offsetPos; } // Update input nodes attached to manipulator node // Doing this triggers a graph update on scheduler thread OnGizmoMoved(GizmoInAction, offset); // redraw manipulator at new position synchronously var packages = BuildRenderPackage(); BackgroundPreviewViewModel.AddGeometryForRenderPackages(packages); }