Ejemplo n.º 1
0
        public override void init()
        {
            Device d3dDevice = GuiController.Instance.D3dDevice;

            TgcSceneLoader loader = new TgcSceneLoader();
            TgcScene sceneOriginal = loader.loadSceneFromFile(GuiController.Instance.ExamplesMediaDir + "ModelosTgc\\Iglesia\\" + "Iglesia-TgcScene.xml");
            TgcScene sceneOriginal2 = loader.loadSceneFromFile(GuiController.Instance.ExamplesMediaDir + "ModelosTgc\\Iglesia\\" + "Iglesia-TgcScene.xml");
            //sceneOriginal = loader.loadSceneFromFile(GuiController.Instance.ExamplesMediaDir + "ModelosTgc\\CajaVerde\\" + "CajaVerde-TgcScene.xml");
            //sceneOriginal = loader.loadSceneFromFile(GuiController.Instance.ExamplesMediaDir + "ModelosTgc\\Avion\\" + "Avion-TgcScene.xml");
            //sceneOriginal = loader.loadSceneFromFile(GuiController.Instance.ExamplesMediaDir + "ModelosTgc\\Iglesia\\" + "Iglesia-TgcScene.xml");
            //TgcScene sceneOriginal = loader.loadSceneFromFile(GuiController.Instance.ExamplesMediaDir + "ModelosTgc\\Box\\" + "Box-TgcScene.xml");
            //TgcScene sceneOriginal2 = loader.loadSceneFromFile(GuiController.Instance.ExamplesMediaDir + "ModelosTgc\\Box\\" + "Box-TgcScene.xml");

            string destFolder = GuiController.Instance.ExamplesDir + "\\" + "PruebaExporter";
            TgcScene unifiedScene = new TgcScene("PruebaExporter", destFolder);
            unifiedScene.Meshes.AddRange(sceneOriginal.Meshes);
            unifiedScene.Meshes.AddRange(sceneOriginal2.Meshes);

            TgcSceneExporter exporter = new TgcSceneExporter();
            //string fileSaved = exporter.exportSceneToXml(unifiedScene, destFolder);
            //string fileSaved = exporter.exportAndAppendSceneToXml(unifiedScene, destFolder);

            TgcSceneExporter.ExportResult r = exporter.exportAndAppendSceneToXml(sceneOriginal, destFolder);

            sceneRecover = loader.loadSceneFromFile(r.filePath);
        }
Ejemplo n.º 2
0
        public void export(List<TgcMesh> meshes, string name, string saveFolderPath)
        {
            TgcScene exportScene = new TgcScene(name, saveFolderPath);
            List<TgcMesh> parents = new List<TgcMesh>();

            foreach (TgcMesh m in meshes)
            {
                if (m.ParentInstance != null && !parents.Contains(m.ParentInstance))
                {
                    parents.Add(m.ParentInstance);
                    exportScene.Meshes.Add(m.ParentInstance);
                }
                exportScene.Meshes.Add(m);
            }

            TgcSceneExporter exporter = new TgcSceneExporter();

            exporter.exportSceneToXml(exportScene, saveFolderPath);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Exporta todos los cuartos y paredes a un xml de TgcScene
        /// </summary>
        private void exportScene(string saveDir, string sceneName)
        {
            TgcScene scene = new TgcScene(sceneName, saveDir);
            foreach (RoomsEditorRoom room in Rooms)
            {
                foreach (RoomsEditorWall wall in room.Walls)
                {
                    int wallSegId = 0;
                    foreach (TgcPlaneWall wall3d in wall.WallSegments)
                    {
                        scene.Meshes.Add(wall3d.toMesh(room.Name + "-" + wall.Name + "-" + wallSegId));
                        wallSegId++;
                    }  
                }
            }

            TgcSceneExporter exporter = new TgcSceneExporter();
            exporter.exportSceneToXml(scene, saveDir);

            MessageBox.Show(this, "Scene export OK", "Export Scene", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
Ejemplo n.º 4
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();
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Guardar la escena
        /// </summary>
        private void exportScene(bool askConfirmation, string path)
        {
            FileInfo fInfo = null;
            if (askConfirmation)
            {
                if (exportSceneSaveDialog.ShowDialog() == DialogResult.OK)
                {
                    fInfo = new FileInfo(exportSceneSaveDialog.FileName);
                    lastSavePath = exportSceneSaveDialog.FileName;
                }
            }
            else
            {
                fInfo = new FileInfo(path);
                exportSceneSaveDialog.FileName = path;
            }

            //Obtener directorio y nombre
            if (fInfo == null)
                return;
            string sceneName = fInfo.Name.Split('.')[0];
            sceneName = sceneName.Replace("-TgcScene", "");
            string saveDir = fInfo.DirectoryName;

            //Intentar guardar
            try
            {
                //Convertir todos los objetos del escenario a un TgcMesh y agregarlos a la escena a exportar
                TgcScene exportScene = new TgcScene(sceneName, saveDir);
                foreach (EditorPrimitive p in meshes)
                {
                    TgcMesh m = p.createMeshToExport();
                    exportScene.Meshes.Add(m);
                }

                //Exportar escena
                TgcSceneExporter exporter = new TgcSceneExporter();
                TgcSceneExporter.ExportResult result;
                if (checkBoxAttachExport.Checked)
                {
                    result = exporter.exportAndAppendSceneToXml(exportScene, saveDir);
                }
                else
                {
                    result = exporter.exportSceneToXml(exportScene, saveDir);
                }

                //Hacer dispose de los objetos clonados para exportar
                exportScene.disposeAll();
                exportScene = null;

                //Mostrar resultado
                if (result.result)
                {
                    if (result.secondaryErrors)
                    {
                        MessageBox.Show(this, "La escena se exportó OK pero hubo errores secundarios. " + result.listErrors(), "Export Scene", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                    {
                        MessageBox.Show(this, "Scene exported OK.", "Export Scene", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else
                {
                    MessageBox.Show(this, "Ocurrieron errores al intentar exportar la escena. " + result.listErrors(),
                        "Export Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(this, "Hubo un error al intenar exportar la escena. Puede ocurrir que esté intentando reemplazar el mismo archivo de escena que tiene abierto ahora. Los archivos de Textura por ejemplo no pueden ser reemplazados si se están utilizando dentro del editor. En ese caso debera guardar en uno nuevo. "
                    + "Error: " + ex.Message + " - " + ex.InnerException.Message,
                    "Export Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Evento de clic en Reload
        /// </summary>
        void Export_ButtonClick(object sender, EventArgs e)
        {
            //saveSceneDialog
            var saveDialog = new SaveFileDialog();
            saveDialog.DefaultExt = ".xml";
            saveDialog.Filter = ".XML |*.xml";
            saveDialog.AddExtension = true;

            saveDialog.Title = "Export Scene";
            if (saveDialog.ShowDialog() == DialogResult.OK)
            {
                FileInfo fInfo = new FileInfo(saveDialog.FileName);
                string sceneName = fInfo.Name.Split('.')[0];
                string saveDir = fInfo.DirectoryName;

                TgcScene exportScene = new TgcScene(sceneName, saveDir);
                foreach (TgcMesh m in bspMap.Meshes)
                {
                    exportScene.Meshes.Add(m);
                }
                TgcSceneExporter exporter = new TgcSceneExporter();
                exporter.exportSceneToXml(exportScene, saveDir);

                MessageBox.Show("Escena exportada a formato TGC satisfactoriamente.", "Export Scene", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }