Exemple #1
0
        private void loadTerrainOutputs()
        {
            terrainOutputs = new Dictionary <TerrainPipelineLayer, List <TerrainOutput> >(new TerrainPipelineLayerComparator());
            foreach (TerrainPlugin terrainPlugin in TerrainPipeline)
            {
                if (terrainPlugin != null)
                {
                    TerrainPipelineLayer pipelineLayer = new TerrainPipelineLayer();
                    TerrainPluginInfo    pluginInfo    = new TerrainPluginInfo(terrainPlugin);
                    pipelineLayer.PluginId  = pluginInfo.Id;
                    pipelineLayer.LayerCode = TerrainPipelineLayer.ToPipelineLayerCode(terrainPlugin.Out, terrainPlugin.In, terrainPlugin.Not);

                    string filename = Path + OUTPUT_SUBDIRECTORY + pipelineLayer.LayerCode + "_" + pipelineLayer.PluginId + ".tou";

                    string inputData = FileInterface.ReadString(filename);
                    if (inputData != null)
                    {
                        List <TerrainOutput> terrainOutputsList = (List <TerrainOutput>)ObjectSerializer.DeSerialize(inputData, typeof(List <TerrainOutput>));
                        if (terrainOutputsList != null)
                        {
                            terrainOutputs.Add(pipelineLayer, terrainOutputsList);
                        }
                    }
                }
            }

            cleanUnusedOutputs();
        }
Exemple #2
0
        private List <TerrainInput> loadTerrainInputs(TerrainPipelineLayer terrainPipelineLayer, List <TerrainInput> terrainInputs)
        {
            string inputData = FileInterface.ReadString(Path + INPUT_SUBDIRECTORY + terrainPipelineLayer.LayerCode + "_" + terrainPipelineLayer.PluginId + ".tin");

            if (inputData != null)
            {
                try
                {
                    List <TerrainInput> allTerrainInputs = new List <TerrainInput>();
                    mergeInnerTerrainInputs(allTerrainInputs, terrainInputs);
                    List <TerrainInputValue> terrainInputValues = (List <TerrainInputValue>)ObjectSerializer.DeSerialize(inputData, typeof(List <TerrainInputValue>));

                    int i = 0;
                    foreach (TerrainInput terrainInput in allTerrainInputs)
                    {
                        switch (terrainInput.Type)
                        {
                        case InputType.Form:
                        case InputType.Sketch:
                            terrainInputValues[i].FillValue(terrainInput);
                            i++;
                            break;
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Saved input data does not match: " + ex.Message);
                }
            }

            return(terrainInputs);
        }
Exemple #3
0
        public TerrainPipelineLayer Clone()
        {
            TerrainPipelineLayer terrainPipelineLayer = new TerrainPipelineLayer();

            terrainPipelineLayer.LayerCode = LayerCode;
            terrainPipelineLayer.PluginId  = PluginId;
            return(terrainPipelineLayer);
        }
Exemple #4
0
        private void saveTerrainInputs(TerrainPipelineLayer terrainPipelineLayer, List <TerrainInput> terrainInputs, HashSet <string> inputFilesCreated)
        {
            if (terrainPipelineLayer == null || terrainInputs == null)
            {
                return;
            }

            List <TerrainInput> allTerrainInputs = new List <TerrainInput>();

            mergeInnerTerrainInputs(allTerrainInputs, terrainInputs);
            terrainInputs = allTerrainInputs;

            List <TerrainInputValue> terrainInputValues = new List <TerrainInputValue>();

            foreach (TerrainInput terrainInput in terrainInputs)
            {
                TerrainInputValue terrainInputValue = null;

                switch (terrainInput.Type)
                {
                case InputType.Form:
                    terrainInputValue = new TerrainInputValueForm();
                    break;

                case InputType.Sketch:
                    terrainInputValue = new TerrainInputValueSketch();
                    break;
                }

                if (terrainInputValue != null)
                {
                    terrainInputValue.SetValue(terrainInput);
                    terrainInputValues.Add(terrainInputValue);
                }
            }

            if (terrainInputValues.Count > 0)
            {
                if (!FileInterface.DoesFolderExists(Path + INPUT_SUBDIRECTORY))
                {
                    FileInterface.CreateFolder(Path + INPUT_SUBDIRECTORY);
                }
                string inputData = ObjectSerializer.Serialize(terrainInputValues);
                FileInterface.WriteString(Path + INPUT_SUBDIRECTORY + terrainPipelineLayer.LayerCode + "_" + terrainPipelineLayer.PluginId + ".tin", inputData);
                inputFilesCreated.Add(Path + INPUT_SUBDIRECTORY + terrainPipelineLayer.LayerCode + "_" + terrainPipelineLayer.PluginId + ".tin");
            }
        }
Exemple #5
0
        private void BackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            Console.Out.WriteLine("Working 1");
            Dictionary <TerrainPlugin, TerrainPipelineLayer> pluginsToProcess = new Dictionary <TerrainPlugin, TerrainPipelineLayer>();

            Dictionary <TerrainPipelineLayer, TerrainPlugin> terrainPluginMap = terrainProject.PipelinePluginMap;

            Console.Out.WriteLine("Working 1.5");
            foreach (TerrainPipelineLayer terrainPipelieLayer in pipelineLayersToProcess)
            {
                pluginsToProcess.Add(terrainPluginMap[terrainPipelieLayer], terrainPipelieLayer);
            }
            Console.Out.WriteLine("Working 2");
            List <TerrainOutput> previousTerrainOutputs = new List <TerrainOutput>();
            bool somethingProcessed = false;

            foreach (TerrainPlugin terrainPlugin in terrainProject.TerrainPipeline)
            {
                Console.Out.WriteLine("Working 3");
                if (terrainPlugin != null)
                {
                    Console.Out.WriteLine("Working 4");
                    if (pluginsToProcess.ContainsKey(terrainPlugin))
                    {
                        Console.Out.WriteLine("Working 5");
                        List <TerrainOutput> newTerrainOutputs = terrainPlugin.StartProcess(terrainProject.TerrainInputs[pluginsToProcess[terrainPlugin]], terrainProject.WorkflowData);
                        somethingProcessed     = true;
                        previousTerrainOutputs = newTerrainOutputs;
                        Console.Out.WriteLine("Working 6");
                        try
                        {
                            if (terrainProject.TerrainOutputs.ContainsKey(pluginsToProcess[terrainPlugin]))
                            {
                                terrainProject.TerrainOutputs[pluginsToProcess[terrainPlugin]] = newTerrainOutputs;
                            }
                            else
                            {
                                terrainProject.TerrainOutputs.Add(pluginsToProcess[terrainPlugin], newTerrainOutputs);
                            }
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.ToString());
                        }
                    }
                    else
                    {
                        TerrainPipelineLayer terrainPipelineLayer = new TerrainPipelineLayer();
                        terrainPipelineLayer.LayerCode = TerrainPipelineLayer.ToPipelineLayerCode(terrainPlugin.Out, terrainPlugin.In, terrainPlugin.Not);

                        if (terrainProject.TerrainOutputs.ContainsKey(terrainPipelineLayer))
                        {
                            if (somethingProcessed)
                            {
                                previousTerrainOutputs = new List <TerrainOutput>();
                                terrainProject.TerrainOutputs[terrainPipelineLayer] = new List <TerrainOutput>();
                            }
                            else
                            {
                                previousTerrainOutputs = terrainProject.TerrainOutputs[terrainPipelineLayer];
                            }
                        }
                    }
                }
            }
            Console.Out.WriteLine("Saving");
            terrainProject.Save();

            Console.Out.WriteLine("Working End");
        }
Exemple #6
0
 public void AddLayerToProcess(TerrainPipelineLayer terrainPipelineLayer)
 {
     pipelineLayersToProcess.Add(terrainPipelineLayer);
 }