public MouseEventArgs(Camera camera, Vector2 mouseViewportCoordinates, Vector3 mouseWorldCoordinates, System.Windows.Forms.MouseButtons button) { // Project the mouse coordinates into world-space at the far z-plane var distantWorldPoint = Maths.Project(camera.ViewMatrix, camera.ProjectionMatrix, new Vector3(mouseViewportCoordinates.X, mouseViewportCoordinates.Y, 1f), (Rectangle)camera.Viewport).Xyz; // Produce a ray originating at the camera and pointing towards the distant world point^ this.ScreenCoordinates = mouseViewportCoordinates; this.MouseRay = new Ray(camera.Position, distantWorldPoint); this.MouseRayFarPoint = (distantWorldPoint - camera.Position).Length; this.Button = button; this.WorldCoordinates = mouseWorldCoordinates; }
public CameraEventArgs(Camera camera) { this.Camera = camera; }
private void Initialization(object sender, EventArgs e) { Console.WriteLine(GL.GetString(StringName.Version)); DebugDrawer.debugProgram = system_program; this.camera = new Camera(); this.timer = new Stopwatch(); this.grid = new CoordinateGrid(); this.mousePole = new MousePole2D(camera); OpenGL.ReportError(); this.BackColor = Colours.ClearColour; ActiveCamera = camera; this.camera.ViewProjectionMatrixChanged += viewport_ProjectionChanged; this.camera.ViewMatrixChanged += camera_ViewMatrixChanged; this.camera.CameraUpdated += mousePole.OnCameraUpdate; this.glControl1.MouseMove += camera.OnMouseMove; this.glControl1.MouseDown += camera.OnMouseDown; this.glControl1.MouseUp += camera.OnMouseUp; this.glControl1.MouseCaptureChanged += camera.OnMouseCaptureChanged; InitializeOpenGL(); this.manager = new MeshManager(program, system_program); timer.Start(); // firing this method is meant to load the view-projection matrix values into // the shader uniforms, and initalizes the camera glControl1_Resize(this, new EventArgs()); }