public Camera() { Viewport = new Viewport(); Track = new Track(); Track.Parent = _panTrack = new PanTrack(Track); Track.Parent.Parent = _orbitTrack = new OrbitTrack(Track); Track.Parent.Parent.Parent = _zoomTrack = new ZoomTrack(Track); _zoomTrack.Zoom(-5f); Viewport.ProjectionChanged += viewport_ProjectionChanged; _orbitTrack.Update(70, 60); Update(0f, 0f); }
public Camera( ) { viewport = new Viewport( ); track = new Track( ); track.Parent = panTrack = new PanTrack(track); track.Parent.Parent = orbitTrack = new OrbitTrack(track); track.Parent.Parent.Parent = zoomTrack = new ZoomTrack(track); zoomTrack.Zoom(-5f); viewport.ProjectionChanged += viewport_ProjectionChanged; orbitTrack.Update(70, 60); this.Update( ); }
public void OnMouseMove(object sender, MouseEventArgs e) { var mouseState = Mouse.GetState(); var keyboardState = Keyboard.GetState(); var currentMouseCoordinate = new Vector2(e.X, e.Y); if (keyboardState.IsKeyDown(Key.ShiftLeft) && (mouseState[MouseButton.Middle] || (mouseState[MouseButton.Left] && keyboardState[Key.ControlLeft]))) { var previousMouseWorldCoordinate = this.UnProjectToViewspace(_previousMouseCoordinate); var mouseWorldCoordinate = this.UnProjectToViewspace(currentMouseCoordinate); var delta = mouseWorldCoordinate - previousMouseWorldCoordinate; delta *= (Position - Vector3.Zero).Length; _panTrack.Update(delta.X, delta.Y); } else if (keyboardState.IsKeyDown(Key.AltLeft) && (mouseState[MouseButton.Middle] || (mouseState[MouseButton.Left] && keyboardState[Key.ControlLeft]))) { var previousMouseWorldCoordinate = this.UnProjectToViewspace(_previousMouseCoordinate); var mouseWorldCoordinate = this.UnProjectToViewspace(currentMouseCoordinate); var delta = mouseWorldCoordinate - previousMouseWorldCoordinate; delta *= 10; _zoomTrack.Update(delta.Y, keyboardState[Key.ControlLeft] ? 2.5f : 1.0f); } else if (mouseState[MouseButton.Middle] || (mouseState[MouseButton.Left] && keyboardState[Key.ControlLeft])) { var delta = currentMouseCoordinate - _previousMouseCoordinate; _orbitTrack.Update(delta.X, delta.Y); } if (MouseMove != null) { MouseMove(this, new SceneMouseEventArgs(this, new Vector2(e.X, e.Y), default(Vector3), e.Button)); } _previousMouseCoordinate = currentMouseCoordinate; }
public Camera() { viewport = new Viewport(); track = new Track(); track.Parent = panTrack = new PanTrack(track); track.Parent.Parent = orbitTrack = new OrbitTrack(track); track.Parent.Parent.Parent = zoomTrack = new ZoomTrack(track); zoomTrack.Zoom(-5f); viewport.ProjectionChanged += viewport_ProjectionChanged; orbitTrack.Update(70, 60); zoomTrack.Update(-5); this.Update(); }