private Vector2 GetMouseCoords(Point screenMouse) { RenderEditor(); var coords = OpenGLHelper.convertScreenToWorldCoords(screenMouse.X, screenMouse.Y); GL.PopMatrix(); return(new Vector2(coords.X, coords.Y)); }
private void glControl1_MouseMove(object sender, MouseEventArgs e) { var mouseCoords = GetMouseCoords(e.Location); var picks = SearchHit(mouseCoords.X, mouseCoords.Y); if (picks.Count > 0) { if (!picks[0].IsSelected) { picks[0].IsHovered = true; glControl1.Invalidate(); } } else { foreach (var obj in GetPickableObjects()) { obj.IsHovered = false; } glControl1.Invalidate(); } if (mouseCameraDown) { var pos = new Vector2(e.Location.X - originMouse.X, e.Location.Y - originMouse.Y); Camera.Position.X += pos.X; Camera.Position.Y -= pos.Y; originMouse = e.Location; glControl1.Invalidate(); } if (!showSelectionBox && isPicked) { Console.WriteLine(pickAction); RenderEditor(); var temp = e.Location; var curPos = OpenGLHelper.convertScreenToWorldCoords(temp.X, temp.Y); var prevPos = OpenGLHelper.convertScreenToWorldCoords(pickOriginMouse.X, pickOriginMouse.Y); var pickMouse = new Point((int)(prevPos.X - curPos.X), (int)(prevPos.Y - curPos.Y)); Console.WriteLine("curPos " + curPos); Console.WriteLine("prevPos " + prevPos); GL.PopMatrix(); if (pickAction == PickAction.Translate) { foreach (var pickObject in SelectedObjects) { if (pickOriginMouse != Point.Empty) { float posX = 0; float posY = 0; float posZ = 0; if (pickAxis == PickAxis.X) { posX = pickMouse.X; } if (pickAxis == PickAxis.Y) { posY = pickMouse.Y; } if (pickAxis == PickAxis.All) { posX = pickMouse.X; posY = pickMouse.Y; } pickObject.PickTranslate(posX, posY, posZ); } } } if (pickAction == PickAction.Rotate) { foreach (var pickObject in SelectedObjects) { if (pickOriginMouse != Point.Empty) { float rotX = 0; float rotY = 0; float rotZ = 0; if (pickAxis == PickAxis.X) { rotX = pickMouse.X * -0.015625f; } if (pickAxis == PickAxis.Y) { rotY = pickMouse.Y; } if (pickAxis == PickAxis.All) { rotX = pickMouse.X * -0.015625f; // rotY = pickMouse.Y; } pickObject.PickRotate(rotX, rotY, rotZ); } } } pickOriginMouse = temp; glControl1.Invalidate(); } if (mouseDown && !isPicked) { RenderEditor(); var temp = e.Location; var curPos = OpenGLHelper.convertScreenToWorldCoords(temp.X, temp.Y); var prevPos = OpenGLHelper.convertScreenToWorldCoords(pickOriginMouse.X, pickOriginMouse.Y); GL.PopMatrix(); DrawSelectionBox(prevPos, curPos); } }