private void glViewport_MouseDoubleClick(object sender, MouseEventArgs e) { if (ReadyToRender && glViewport != null) { glViewport.MakeCurrent(); GL.LoadIdentity(); GL.Viewport(glViewport.ClientRectangle); Camera.setRenderWidth(glViewport.Width); Camera.setRenderHeight(glViewport.Height); Camera.Update(); } //Mesh Selection Test if (e.Button == MouseButtons.Left) { Ray ray = new Ray(Camera, glViewport); int selectedSize = 0; TransformTool.b = null; foreach (TreeNode node in draw) { if (!(node is ModelContainer)) { continue; } ModelContainer con = (ModelContainer)node; if (modeBone.Checked) { SortedList <double, Bone> selected = con.GetBoneSelection(ray); selectedSize = selected.Count; if (selected.Count > dbdistance)// && MeshList.treeView1.Nodes.Contains(selected.Values.ElementAt(dbdistance))) { TransformTool.b = (Bone)selected.Values.ElementAt(dbdistance); } break; } if (modeMesh.Checked) { SortedList <double, NUD.Mesh> selected = con.GetMeshSelection(ray); selectedSize = selected.Count; if (selected.Count > dbdistance) { MeshList.treeView1.SelectedNode = selected.Values.ElementAt(dbdistance); } } } dbdistance += 1; if (dbdistance >= selectedSize) { dbdistance = 0; } _LastPoint = e.Location; } }