private LinearMath.Vector ScreenToWorld(Point point) { double dx = (viewPort.Camera as OrthographicCamera).Width / viewPort.ActualWidth; LinearMath.Vector v = new LinearMath.Vector(3); v[0] = (point.X - viewPort.ActualWidth / 2.0) * dx + (viewPort.Camera as OrthographicCamera).Position.X; v[1] = (viewPort.ActualHeight / 2.0 - point.Y) * dx + (viewPort.Camera as OrthographicCamera).Position.Y; return(v); }
private void OnMouseUp(object sender, EventArgs arg) { if (arg is MouseButtonEventArgs) { if ((arg as MouseButtonEventArgs).MiddleButton == MouseButtonState.Released) { vect = null; } } }
private void OnMouseDown(object sender, EventArgs arg) { if (arg is MouseButtonEventArgs) { if ((arg as MouseButtonEventArgs).MiddleButton == MouseButtonState.Pressed) { Point p = (arg as MouseEventArgs).GetPosition(sender as Grid); vect = ScreenToWorld(p); } } }
private void OnMouseMove(object sender, EventArgs arg) { if (arg is MouseEventArgs) { if (vect != null) { Point p = (arg as MouseEventArgs).GetPosition(sender as Grid); LinearMath.Vector dif = ScreenToWorld(p) - vect; double X = (viewPort.Camera as OrthographicCamera).Position.X - dif[0]; double Y = (viewPort.Camera as OrthographicCamera).Position.Y - dif[1]; double Z = (viewPort.Camera as OrthographicCamera).Position.Z; (viewPort.Camera as OrthographicCamera).Position = new Point3D(X, Y, Z); } } }