Exemplo n.º 1
0
        /// <summary>
        /// Clic en "Importar Mesh"
        /// </summary>
        private void buttonImportMesh_Click(object sender, EventArgs e)
        {
            DialogResult r = meshBrowser.ShowDialog();
            if (r == DialogResult.OK)
            {
                try
                {
                    //Cargar scene
                    string path = meshBrowser.SelectedMesh;
                    TgcSceneLoader loader = new TgcSceneLoader();
                    TgcScene scene = loader.loadSceneFromFile(path);

                    //Agregar meshes al escenario y tambien seleccionarlas
                    selectionRectangle.clearSelection();
                    foreach (TgcMesh mesh in scene.Meshes)
                    {
                        MeshPrimitive p = new MeshPrimitive(this, mesh);
                        meshes.Add(p);
                        selectionRectangle.selectObject(p);
                    }
                    currentState = MeshCreatorControl.State.SelectObject;
                    selectionRectangle.activateCurrentGizmo();
                    updateModifyPanel();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(this, "Hubo un error al importar el mesh." + "Error: " + ex.Message + " - " + ex.InnerException.Message,
                        "Import Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Clic en "Merge Selected"
        /// </summary>
        private void buttonMergeSelected_Click(object sender, EventArgs e)
        {
            //Que haya mas de uno seleccionado
            if (selectionList.Count > 1)
            {
                //Clonar objetos a mergear
                List<TgcMesh> objectsToMerge = new List<TgcMesh>();
                foreach (EditorPrimitive p in selectionList)
                {
                    TgcMesh m = p.createMeshToExport();
                    objectsToMerge.Add(m);
                }

                //Eliminar los originales
                deleteSelectedObjects();

                //Hacer merge
                TgcSceneExporter exporter = new TgcSceneExporter();
                TgcMesh mergedMesh = exporter.mergeMeshes(objectsToMerge);

                //Hacer dispose de los objetos clonados para mergear
                foreach (TgcMesh m in objectsToMerge)
                {
                    m.dispose();
                }

                //Agregar nuevo mesh al escenario y seleccionarlo
                EditorPrimitive pMerged = new MeshPrimitive(this, mergedMesh);
                addMesh(pMerged);
                selectionRectangle.selectObject(pMerged);
                currentState = MeshCreatorControl.State.SelectObject;
                selectionRectangle.activateCurrentGizmo();
                updateModifyPanel();
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Clic en "Convert to Mesh"
        /// </summary>
        private void buttonModifyConvertToMesh_Click(object sender, EventArgs e)
        {
            //Clonar objetos seleccionados
            List<EditorPrimitive> newObjects = new List<EditorPrimitive>();
            List<EditorPrimitive> objectToDelete = new List<EditorPrimitive>();
            foreach (EditorPrimitive p in selectionList)
            {
                TgcMesh mesh = p.createMeshToExport();
                EditorPrimitive meshP = new MeshPrimitive(this, mesh);
                newObjects.Add(meshP);

                objectToDelete.Add(p);
            }

            //Eliminar objetos anteriores
            deleteObjects(objectToDelete);

            //Agregar nuevos objetos al escenario y seleccionarlos
            foreach (EditorPrimitive p in newObjects)
            {
                addMesh(p);
                selectionRectangle.selectObject(p);
            }
            currentState = MeshCreatorControl.State.SelectObject;
            selectionRectangle.activateCurrentGizmo();
            updateModifyPanel();
        }