public void TranslateSceneWithMouse(Vector mouseMovement) { ActiveRenderer.Scene.Camera.Move(new Vector3D(mouseMovement.X / 50, 0, -mouseMovement.Y / 50)); UpdateManipulatorInfo(); ActiveRenderer.ForceRedraw(); }
public void GrabUsingMouseRect( Rect screenSpaceGrabRect, bool allowMultigrab ) { var selectables = GetSceneSelectables(); if (selectables.Count == 0) { return; } foreach (var selectable in selectables) { var screenSpacePosition = ActiveRenderer.GetStandardScreenSpacePosition( selectable.WorldPosition ); if (!screenSpacePosition.HasValue) { continue; } if (screenSpaceGrabRect.Contains(screenSpacePosition.Value)) { _scene.GrabObject(selectable); } } }
public void ScaleWithMouse(int delta) { ActiveRenderer.Scene.Camera.Zoom += delta * 0.002; UpdateManipulatorInfo(); ActiveRenderer.ForceRedraw(); }
private void LoadScene() { var result = MessageBox.Show( _ownerWindow, "Loading a scene will clear this one. Are you sure?", "New scene confirmation", MessageBoxButton.YesNo, MessageBoxImage.Question ); if (result == MessageBoxResult.No) { return; } var ofd = new OpenFileDialog(); var fileResult = ofd.ShowDialog(); if (fileResult == false) { return; } CreateNewScene(); _scene.Import(ofd.FileName); ActiveRenderer.ForceRedraw(); }
public void RotateSceneWithMouse(Vector mouseMovement) { var rotation = new Vector3D(-mouseMovement.Y / 50, -mouseMovement.X / 50, 0); ActiveRenderer.Scene.Camera.Rotate(rotation); UpdateManipulatorInfo(); ActiveRenderer.ForceRedraw(); }
private void UpdateManipulatorInfo() { var cursorScreenPos = ActiveRenderer.GetStandardScreenSpacePosition(_scene.Manipulator.Position); var cursorViewPosInfo = cursorScreenPos.HasValue ? String.Format("Cursor screen position: ({0:0.##} ; {1:0.##})", cursorScreenPos.Value.X, cursorScreenPos.Value.Y) : "Cursor screen position: <Clipped>"; CursorReadableInfo = String.Format("Cursor world position: ({0:0.##} ; {1:0.##} ; {2:0.##}) {3}", _scene.Manipulator.Position.X, _scene.Manipulator.Position.Y, _scene.Manipulator.Position.Z, cursorViewPosInfo); }
public void MoveManipulator(double dx, double dy, double dz) { var shift = new Vector3D(dx, dy, dz); _scene.Manipulator.Translate(shift); foreach (var obj in _scene.GrabbedObjects) { obj.Translate(shift); } UpdateManipulatorInfo(); ActiveRenderer.ForceRedraw(); }
public void GrabUsingMouse( Point screenSpaceClick, bool allowMultigrab, double limit = 0.2 ) { var selectables = GetSceneSelectables(); if (selectables.Count == 0) { return; } ISceneSelectable closestObject = null; var closestDistance = double.MaxValue; foreach (var selectable in selectables) { var screenSpacePosition = ActiveRenderer .GetStandardScreenSpacePosition(selectable.WorldPosition); if (!screenSpacePosition.HasValue) { continue; } var candidateLength = (screenSpacePosition.Value - screenSpaceClick).Length; if (candidateLength >= closestDistance) { continue; } closestObject = selectable; closestDistance = candidateLength; } if (closestObject == null || closestDistance > limit) { return; } if (allowMultigrab) { _scene.ToggleObjectGrab(closestObject); } else { _scene.SetObjectGrab(closestObject); } }
private void SceneCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { ActiveRenderer.ForceRedraw(); }
private void SceneChanged(object sender, PropertyChangedEventArgs e) { ActiveRenderer.ForceRedraw(); }