public override void OnMouseUp(MouseEventArgs mouseEvent) { trackballTumbleWidget.DrawRotationHelperCircle = false; Invalidate(); int volumeHitIndex; Ray ray = trackballTumbleWidget.GetRayFromScreen(mouseEvent.Position); IntersectInfo info; bool anyInteractionVolumeHit = FindInteractionVolumeHit(ray, out volumeHitIndex, out info); MouseEvent3DArgs mouseEvent3D = new MouseEvent3DArgs(mouseEvent, ray, info); if (MouseDownOnInteractionVolume && volumeIndexWithMouseDown != -1) { interactionVolumes[volumeIndexWithMouseDown].OnMouseUp(mouseEvent3D); SelectedInteractionVolume = null; volumeIndexWithMouseDown = -1; } else { volumeIndexWithMouseDown = -1; if (anyInteractionVolumeHit) { interactionVolumes[volumeHitIndex].OnMouseUp(mouseEvent3D); } SelectedInteractionVolume = null; } base.OnMouseUp(mouseEvent); }
public override void OnMouseDown(MouseEventArgs mouseEvent) { base.OnMouseDown(mouseEvent); if (trackballTumbleWidget.MouseCaptured) { if (trackballTumbleWidget.TransformState == TrackBallController.MouseDownType.Rotation || mouseEvent.Button == MouseButtons.Right) { trackballTumbleWidget.DrawRotationHelperCircle = true; } } int volumeHitIndex; Ray ray = trackballTumbleWidget.GetRayFromScreen(mouseEvent.Position); IntersectInfo info; if (FindInteractionVolumeHit(ray, out volumeHitIndex, out info)) { MouseEvent3DArgs mouseEvent3D = new MouseEvent3DArgs(mouseEvent, ray, info); volumeIndexWithMouseDown = volumeHitIndex; interactionVolumes[volumeHitIndex].OnMouseDown(mouseEvent3D); SelectedInteractionVolume = interactionVolumes[volumeHitIndex]; } else { SelectedInteractionVolume = null; } }