private void glControl_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
dragging = true;
downX = dragX = e.X;
downY = dragY = e.Y;
if (ModifierKeys == Keys.None)
{
object picked;
if (TryPick(e.X, e.Y, out picked, out LeftclickedFaceID))
{
if (picked is RenderPrimitive)
{
TryTouchObject((RenderPrimitive)picked);
}
}
}
else if (ModifierKeys == Keys.Alt)
{
object picked;
int LeftclickedFaceID;
Vector3 worldPosition;
if (TryPick(e.X, e.Y, out picked, out LeftclickedFaceID, out worldPosition))
{
trackedObject = null;
Camera.FocalPoint = worldPosition;
Point screenCenter = new Point(glControl.Width / 2, glControl.Height / 2);
Cursor.Position = glControl.PointToScreen(screenCenter);
downX = dragX = screenCenter.X;
downY = dragY = screenCenter.Y;
Cursor.Hide();
}
}
}
else if (e.Button == MouseButtons.Right)
{
object picked;
RightclickedObject = null;
if (TryPick(e.X, e.Y, out picked, out RightclickedFaceID, out RightclickedPosition))
{
if (picked is SceneObject)
{
RightclickedObject = (SceneObject)picked;
}
}
ctxMenu.Show(glControl, e.X, e.Y);
}
}