private void DrawMouse(OpenGL gl) { Point p = oc.PointToClient(MousePosition); double d1 = (double)oc.Width / ((double)ScaleX * 2); double d2 = (double)oc.Height / ((double)ScaleY * 2); double g1 = (double)p.X / d1; double g2 = (double)p.Y / d2; double h1 = g1 - ScaleX; double h2 = ScaleY - g2; gl.Color(0.5f, 0.5f, 0.5f); gl.Vertex(h1, -ScaleY); gl.Vertex(h1, ScaleY); gl.Vertex(-ScaleX, h2); gl.Vertex(ScaleX, h2); gl.End(); DrawText(gl, (float)(h1 + (double)ScaleX / 30), (float)(h2 - (double)ScaleY / 25), 15, "(" + h1.ToString("f2") + "," + h2.ToString("f2") + ")"); gl.Begin(OpenGL.GL_LINES); gl.Color(1f, 1f, 1f); }
private void Update(OpenGLControl control) { if (!Host.CurrentApplicationIsActive) { return; } if (control.ClientRectangle.Contains(control.PointToClient(Cursor.Position))) { var delta = new vec2(Cursor.Position.X, Cursor.Position.Y) - LastMousePosition; // Rotate camera if (Control.MouseButtons.HasFlag(MouseButtons.Middle)) { MainCamera.Rotate(delta); } // Rotate shape if (Control.MouseButtons.HasFlag(MouseButtons.Left)) { ShapeRotationAngle += new vec2(delta.y, delta.x); } } // Move camera var moveDelta = new vec3(0.0f, 0.0f, 0.0f); if (Keyboard.IsKeyDown(Key.W)) { moveDelta.z -= 1.0f; } if (Keyboard.IsKeyDown(Key.S)) { moveDelta.z += 1.0f; } if (Keyboard.IsKeyDown(Key.A)) { moveDelta.x -= 1.0f; } if (Keyboard.IsKeyDown(Key.D)) { moveDelta.x += 1.0f; } if (Control.MouseButtons.HasFlag(MouseButtons.XButton1)) { moveDelta.y -= 1.0f; } if (Control.MouseButtons.HasFlag(MouseButtons.XButton2)) { moveDelta.y += 1.0f; } ShapeScale += Scroll / 10.0f; Scroll = 0.0f; MainCamera.Move(moveDelta); // Arrows var keyLeft = Keyboard.IsKeyDown(Key.Left); var keyRight = Keyboard.IsKeyDown(Key.Right); if (!LastKeyLeft && keyLeft) { Voltages.Back(); } if (!LastKeyRight && keyRight) { Voltages.Forward(); } if (Keyboard.IsKeyDown(Key.Up)) { ElectrodeMaxDistance += 0.25f; } if (Keyboard.IsKeyDown(Key.Down)) { ElectrodeMaxDistance -= 0.25f; } LastKeyLeft = keyLeft; LastKeyRight = keyRight; }