Ejemplo n.º 1
0
        /// <summary>
        /// Cargar meshes del directorio especificado
        /// </summary>
        public void loadFolderContent(string folderPath)
        {
            textBoxFolderPath.Text = browseDialog.FileName;
            panelItems.Controls.Clear();

            if (Directory.Exists(folderPath))
            {
                //Obtener todas las carpetas del directorio
                string[] allDirs = Directory.GetDirectories(folderPath);

                //Excluir subdirectorios innecesarios
                List<string> dirs = new List<string>();
                for (int i = 0; i < allDirs.Length; i++)
                {
                    if (!allDirs[i].Contains(".svn"))
                    {
                        dirs.Add(allDirs[i]);
                    }
                }

                //Ver cuales son directorios simples y cuales tienen un -TgcScene.xml adentro
                List<MeshItemControl> meshes = new List<MeshItemControl>();
                foreach (string  dirPath in dirs)
                {
                    //Buscar si hay algun mesh adentro del directorio
                    string[] files = Directory.GetFiles(dirPath, "*-TgcScene.xml", SearchOption.TopDirectoryOnly);

                    //Tiene que haber uno solo
                    if (files.Length == 1)
                    {
                        //Ver si tiene imagen de preview
                        FileInfo fi = new FileInfo(files[0]);
                        string previewImagePath = fi.Directory.FullName + "\\preview.jpg";
                        if (!File.Exists(previewImagePath))
                        {
                            previewImagePath = null;
                        }

                        //Crear item de mesh
                        MeshItemControl item = new MeshItemControl(files[0], previewImagePath, this, false);
                        meshes.Add(item);
                    }
                    //No tiene mesh, es un directorio comun
                    else
                    {
                        //Crear item de directorio
                        MeshItemControl item = new MeshItemControl(dirPath, null, this, true);
                        panelItems.Controls.Add(item);
                    }

                }

                //Agregar todos los items de mesh al final
                panelItems.Controls.AddRange(meshes.ToArray());

                //Seleccionar primer elemento
                if (panelItems.Controls.Count > 0)
                {
                    ((MeshItemControl)panelItems.Controls[0]).selectItem();
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Cargar meshes del directorio especificado
        /// </summary>
        public void loadFolderContent(string folderPath)
        {
            textBoxFolderPath.Text = browseDialog.FileName;

            //Limpiar controles anteriores
            foreach (MeshItemControl c in panelItems.Controls)
            {
                c.dispose();
            }
            panelItems.Controls.Clear();

            if (Directory.Exists(folderPath))
            {
                //Obtener todas las carpetas del directorio
                string[] allDirs = Directory.GetDirectories(folderPath);

                //Excluir subdirectorios innecesarios
                List <string> dirs = new List <string>();
                for (int i = 0; i < allDirs.Length; i++)
                {
                    if (!allDirs[i].Contains(".svn"))
                    {
                        dirs.Add(allDirs[i]);
                    }
                }

                //Ver cuales son directorios simples y cuales tienen un -TgcScene.xml adentro
                List <MeshItemControl> meshes = new List <MeshItemControl>();
                foreach (string dirPath in dirs)
                {
                    //Buscar si hay algun mesh adentro del directorio
                    string[] files = Directory.GetFiles(dirPath, "*-TgcScene.xml", SearchOption.TopDirectoryOnly);

                    //Si hay al menos uno en el directorio
                    if (files.Length > 0)
                    {
                        //Ver si tiene imagen de preview
                        FileInfo fi = new FileInfo(files[0]);
                        string   previewImagePath = fi.Directory.FullName + "\\preview.jpg";
                        if (!File.Exists(previewImagePath))
                        {
                            previewImagePath = null;
                        }

                        //Crear un item de mesh para cada uno
                        foreach (string file in files)
                        {
                            MeshItemControl item = new MeshItemControl(file, previewImagePath, this, false);
                            meshes.Add(item);
                        }
                    }
                    //No tiene mesh, es un directorio comun
                    else
                    {
                        //Crear item de directorio
                        MeshItemControl item = new MeshItemControl(dirPath, null, this, true);
                        panelItems.Controls.Add(item);
                    }
                }

                //Agregar todos los items de mesh al final
                panelItems.Controls.AddRange(meshes.ToArray());



                //Seleccionar primer elemento
                if (panelItems.Controls.Count > 0)
                {
                    ((MeshItemControl)panelItems.Controls[0]).selectItem();
                }
            }
        }