private void MouseMoveControl(object sender, MouseEventArgs e) { if (mouseMode) { renderer.Camera.AddYaw((Cursor.Position.X - MouseCenter.X) / 4F); renderer.Camera.AddPitch((Cursor.Position.Y - MouseCenter.Y) / 4F); Cursor.Position = MouseCenter; } else { int deltaX = e.X - oldMouseX; int deltaY = e.Y - oldMouseY; if (e.Button == MouseButtons.Middle) { renderer.Camera.AddYaw(deltaX * renderer.Camera.MouseSensitivity); renderer.Camera.AddPitch(deltaY * renderer.Camera.MouseSensitivity); } if (e.Button == MouseButtons.Right) { // Do not scale with framerate; WinForms events are not scalable with FPS. renderer.Camera.AddPositionSideways(deltaX, false); renderer.Camera.AddPositionUp(deltaY, false); } foreach (var l in LayoutEditors) { l.MouseMoveForPosition(renderer.viewProjection, deltaX, deltaY); } } oldMouseX = e.X; oldMouseY = e.Y; if (loopNotStarted) { loopNotStarted = false; renderer.RunMainLoop(renderPanel, this); } }