Exemple #1
0
        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;
            }
        }