private void ClearButton_OnClick(object sender, RoutedEventArgs e) { ObjectsVisual.Children.Clear(); SelectObject(null); HighlightObject(null); OverlayViewport.HideModelMover(); OverlayCanvas.ClearScreenPositions(); }
private void UpdateEditorModeUI() { if (_currentEditorMode == EditorModes.Create) { CreateOptionsPanel.Visibility = Visibility.Visible; EditOptionsPanel.Visibility = Visibility.Collapsed; ViewportBorder.Cursor = Cursors.Arrow; } else if (_currentEditorMode == EditorModes.Edit) { CreateOptionsPanel.Visibility = Visibility.Collapsed; EditOptionsPanel.Visibility = Visibility.Visible; ViewportBorder.Cursor = Cursors.Hand; } SelectObject(null); HighlightObject(null); OverlayViewport.HideModelMover(); OverlayCanvas.ClearScreenPositions(); UpdateHorizontalMouseLines(); }
private void ProcessEditMouseButtonPressed(MouseButtonEventArgs e) { Point mousePosition = e.GetPosition(MainViewport); if ((EditPositionsToggleButton.IsChecked ?? false)) { // Get all screen positions that are near mousePosition var intersectingScreenPositions = OverlayCanvas.GetIntersectingScreenPositions(mousePosition, OverlayCanvas.PositionSelectionMinMouseDistance); if (intersectingScreenPositions != null && intersectingScreenPositions.Count > 0) { bool updateModelMover = false; foreach (var intersectingScreenPosition in intersectingScreenPositions) { if (intersectingScreenPosition.IsSelected) // If we clicked on selected position, unselect it { OverlayCanvas.ClearSelectedScreenPosition(intersectingScreenPosition); updateModelMover = true; } else if (intersectingScreenPosition.IsHighlighted) // select highlighted position { OverlayCanvas.ClearHighlightedScreenPosition(intersectingScreenPosition); OverlayCanvas.SelectScreenPosition(intersectingScreenPosition); updateModelMover = true; } } if (updateModelMover) { if (OverlayCanvas.GetSelectedScreenPositionsCount() == 0) { // No more selected positions OverlayViewport.HideModelMover(); } else { OverlayViewport.SetupModelMover(); // Get center position of all highlighted positions _startMovePosition = OverlayCanvas.GetCenterWorldPosition(p => p.IsSelected); OverlayViewport.ModelMoverPosition = _startMovePosition; OverlayViewport.UpdateModelMoverSize(desiredScreenLength: 100); } } // If we have clicked on a position, do not proceed with checking which object was clicked return; } } var hitModelVisual3D = GetHitObject(mousePosition); if (hitModelVisual3D != null) { if (_selectedModelVisual3D == hitModelVisual3D) { return; } if (EditObjectToggleButton.IsChecked ?? false) { // Show selection CornerWireBoxVisual3D around selected object var selectedModelBounds = ModelUtils.GetBounds(hitModelVisual3D, hitModelVisual3D.Transform, checkOnlyBounds: true); SelectObject(hitModelVisual3D, selectedModelBounds); OverlayViewport.SetupModelMover(); _startMovePosition = selectedModelBounds.GetCenterPosition(); OverlayViewport.ModelMoverPosition = _startMovePosition; OverlayViewport.UpdateModelMoverSize(desiredScreenLength: 100); } else { OverlayCanvas.ClearScreenPositions(); // Clear positions on previously selected model var meshGeometry3D = GetMeshGeometry3D(hitModelVisual3D); OverlayCanvas.AddScreenPositions(meshGeometry3D, hitModelVisual3D.Transform); _selectedModelVisual3D = hitModelVisual3D; } } if (_selectedModelVisual3D == null) { SelectObject(null); OverlayViewport.HideModelMover(); } HighlightObject(null); }