Exemplo n.º 1
0
        public NetworkView()
        {
            //
            // Create a collection to contain nodes.
            //
            Nodes = new ImpObservableCollection <object>();

            //
            // Create a collection to contain connections.
            //
            Connections = new ImpObservableCollection <object>();

            //
            // Default background is white.
            //
            Background = Brushes.White;

            //
            // Add handlers for node and connector drag events.
            //
            AddHandler(NodeItem.NodeDragStartedEvent, new NodeDragStartedEventHandler(NodeItem_DragStarted));
            AddHandler(NodeItem.NodeDraggingEvent, new NodeDraggingEventHandler(NodeItem_Dragging));
            AddHandler(NodeItem.NodeDragCompletedEvent, new NodeDragCompletedEventHandler(NodeItem_DragCompleted));
            AddHandler(ConnectorItem.ConnectorDragStartedEvent, new ConnectorItemDragStartedEventHandler(ConnectorItem_DragStarted));
            AddHandler(ConnectorItem.ConnectorDraggingEvent, new ConnectorItemDraggingEventHandler(ConnectorItem_Dragging));
            AddHandler(ConnectorItem.ConnectorDragCompletedEvent, new ConnectorItemDragCompletedEventHandler(ConnectorItem_DragCompleted));
        }
Exemplo n.º 2
0
 public AddChoiceUndoableCommand(CommandExecutor cmdExec, NodeViewModel node, ImpObservableCollection <ConnectorViewModel> outgoingConnectors, DialogueEntry entry, Dialogue dialogue, string content)
 {
     _outgoingConnectors = outgoingConnectors;
     _dialogue           = dialogue;
     _dialogueEntry      = entry;
     _content            = content;
     _node    = node;
     _cmdExec = cmdExec;
 }
        public PreviewWindow(ImpObservableCollection<object> nodes)
        {
            InitializeComponent();

            // clone the module by generating a new module via serialization
            // this is not the nicest way of doing this, so we'll improve it later with a proper clone mechanism
            // for now though, it works quite well
            XmlDocument doc = LibnoiseFileUtils.DiagramToXML(nodes);
            ModuleBase module = LibnoiseFileUtils.LoadLibnoiseXml(doc);
            SetSeeds(module, 0);

            this.nodes = nodes;
            this.module = module;

            imageWidth = 512;
            imageHeight = 512;

            selectedNoiseStyle = NoiseStyles.Planar;
            selectedColorStyle = ColourStyles.Greyscale;

            GeneratePreview();
        }
Exemplo n.º 4
0
        public PreviewWindow(ImpObservableCollection <object> nodes)
        {
            InitializeComponent();

            // clone the module by generating a new module via serialization
            // this is not the nicest way of doing this, so we'll improve it later with a proper clone mechanism
            // for now though, it works quite well
            XmlDocument doc    = LibnoiseFileUtils.DiagramToXML(nodes);
            ModuleBase  module = LibnoiseFileUtils.LoadLibnoiseXml(doc);

            SetSeeds(module, 0);

            this.nodes  = nodes;
            this.module = module;

            imageWidth  = 512;
            imageHeight = 512;

            selectedNoiseStyle = NoiseStyles.Planar;
            selectedColorStyle = ColourStyles.Greyscale;

            GeneratePreview();
        }
Exemplo n.º 5
0
 public NodeGraph()
 {
     Nodes       = new ImpObservableCollection <object>();
     Connections = new ImpObservableCollection <object>();
 }
        public static XmlDocument DiagramToXML(ImpObservableCollection<object> nodes)
        {
            XmlDocument doc = new XmlDocument();
            XmlElement root = (XmlElement)doc.AppendChild(doc.CreateElement("LibNoise"));

            foreach (Object o in nodes)
            {
                NodeViewModel nvm = (NodeViewModel)o;

                XmlElement module = doc.CreateElement("Module");
                module.SetAttribute("type", nvm.Module.ModuleType);
                module.SetAttribute("guid", nvm.Module.ID);
                module.SetAttribute("position", nvm.X + "," + nvm.Y);

                switch (nvm.Module.ModuleType)
                {
                    case "Billow":
                        module.AppendChild(doc.CreateElement("Frequency")).InnerText = ((Billow)nvm.Module.LibnoiseModule).Frequency.ToString();
                        module.AppendChild(doc.CreateElement("Lacunarity")).InnerText = ((Billow)nvm.Module.LibnoiseModule).Lacunarity.ToString();
                        module.AppendChild(doc.CreateElement("OctaveCount")).InnerText = ((Billow)nvm.Module.LibnoiseModule).OctaveCount.ToString();
                        module.AppendChild(doc.CreateElement("Persistence")).InnerText = ((Billow)nvm.Module.LibnoiseModule).Persistence.ToString();
                        module.AppendChild(doc.CreateElement("Quality")).InnerText = ((Billow)nvm.Module.LibnoiseModule).Quality.ToString();
                        module.AppendChild(doc.CreateElement("Seed")).InnerText = ((Billow)nvm.Module.LibnoiseModule).Seed.ToString();
                        break;
                    case "Checker":
                        break;
                    case "Const":
                        module.AppendChild(doc.CreateElement("Value")).InnerText = ((Const)nvm.Module.LibnoiseModule).Value.ToString();
                        break;
                    case "Cylinders":
                        module.AppendChild(doc.CreateElement("Frequency")).InnerText = ((Cylinders)nvm.Module.LibnoiseModule).Frequency.ToString();
                        break;
                    case "Perlin":
                        module.AppendChild(doc.CreateElement("Frequency")).InnerText = ((Perlin)nvm.Module.LibnoiseModule).Frequency.ToString();
                        module.AppendChild(doc.CreateElement("Lacunarity")).InnerText = ((Perlin)nvm.Module.LibnoiseModule).Lacunarity.ToString();
                        module.AppendChild(doc.CreateElement("OctaveCount")).InnerText = ((Perlin)nvm.Module.LibnoiseModule).OctaveCount.ToString();
                        module.AppendChild(doc.CreateElement("Persistence")).InnerText = ((Perlin)nvm.Module.LibnoiseModule).Persistence.ToString();
                        module.AppendChild(doc.CreateElement("Quality")).InnerText = ((Perlin)nvm.Module.LibnoiseModule).Quality.ToString();
                        module.AppendChild(doc.CreateElement("Seed")).InnerText = ((Perlin)nvm.Module.LibnoiseModule).Seed.ToString();
                        break;
                    case "RidgedMultifractal":
                        module.AppendChild(doc.CreateElement("Frequency")).InnerText = ((RidgedMultifractal)nvm.Module.LibnoiseModule).Frequency.ToString();
                        module.AppendChild(doc.CreateElement("Lacunarity")).InnerText = ((RidgedMultifractal)nvm.Module.LibnoiseModule).Lacunarity.ToString();
                        module.AppendChild(doc.CreateElement("OctaveCount")).InnerText = ((RidgedMultifractal)nvm.Module.LibnoiseModule).OctaveCount.ToString();
                        module.AppendChild(doc.CreateElement("Quality")).InnerText = ((RidgedMultifractal)nvm.Module.LibnoiseModule).Quality.ToString();
                        module.AppendChild(doc.CreateElement("Seed")).InnerText = ((RidgedMultifractal)nvm.Module.LibnoiseModule).Seed.ToString();
                        break;
                    case "Spheres":
                        module.AppendChild(doc.CreateElement("Frequency")).InnerText = ((Spheres)nvm.Module.LibnoiseModule).Frequency.ToString();
                        break;
                    case "Voronoi":
                        module.AppendChild(doc.CreateElement("Frequency")).InnerText = ((Voronoi)nvm.Module.LibnoiseModule).Frequency.ToString();
                        module.AppendChild(doc.CreateElement("Displacement")).InnerText = ((Voronoi)nvm.Module.LibnoiseModule).Displacement.ToString();
                        module.AppendChild(doc.CreateElement("UseDistance")).InnerText = ((Voronoi)nvm.Module.LibnoiseModule).UseDistance.ToString();
                        module.AppendChild(doc.CreateElement("Seed")).InnerText = ((Voronoi)nvm.Module.LibnoiseModule).Seed.ToString();
                        break;
                    case "Abs":
                        XmlNode absInputs = module.AppendChild(doc.CreateElement("ModuleInputs"));
                        absInputs.AppendChild(doc.CreateElement("Input")).InnerText = nvm.Module.Inputs[0].ID;
                        break;
                    case "Add":
                        XmlNode addInputs = module.AppendChild(doc.CreateElement("ModuleInputs"));
                        addInputs.AppendChild(doc.CreateElement("Left")).InnerText = nvm.Module.Inputs[0].ID;
                        addInputs.AppendChild(doc.CreateElement("Right")).InnerText = nvm.Module.Inputs[1].ID;
                        break;
                    case "Blend":
                        XmlNode blendInputs = module.AppendChild(doc.CreateElement("ModuleInputs"));
                        blendInputs.AppendChild(doc.CreateElement("Left")).InnerText = nvm.Module.Inputs[0].ID;
                        blendInputs.AppendChild(doc.CreateElement("Right")).InnerText = nvm.Module.Inputs[1].ID;
                        blendInputs.AppendChild(doc.CreateElement("Operator")).InnerText = nvm.Module.Inputs[2].ID;
                        break;
                    case "Cache":
                        XmlNode cacheInputs = module.AppendChild(doc.CreateElement("ModuleInputs"));
                        cacheInputs.AppendChild(doc.CreateElement("Input")).InnerText = nvm.Module.Inputs[0].ID;
                        break;
                    case "Clamp":
                        module.AppendChild(doc.CreateElement("Maximum")).InnerText = ((Clamp)nvm.Module.LibnoiseModule).Maximum.ToString();
                        module.AppendChild(doc.CreateElement("Minimum")).InnerText = ((Clamp)nvm.Module.LibnoiseModule).Minimum.ToString();
                        XmlNode clampInputs = module.AppendChild(doc.CreateElement("ModuleInputs"));
                        clampInputs.AppendChild(doc.CreateElement("Input")).InnerText = nvm.Module.Inputs[0].ID;
                        break;
                    case "Curve":
                        XmlNode controlPointInputs = module.AppendChild(doc.CreateElement("ControlPoints"));
                        foreach (CurveControlPoint cp in ((Curve)nvm.Module.LibnoiseModule).ControlPoints)
                        {
                            controlPointInputs.AppendChild(doc.CreateElement("ControlPoint")).InnerText = cp.X + "," + cp.Y;
                        }
                        XmlNode curveInputs = module.AppendChild(doc.CreateElement("ModuleInputs"));
                        curveInputs.AppendChild(doc.CreateElement("Input")).InnerText = nvm.Module.Inputs[0].ID;
                        break;
                    case "Displace":
                        XmlNode displaceInputs = module.AppendChild(doc.CreateElement("ModuleInputs"));
                        displaceInputs.AppendChild(doc.CreateElement("Primary")).InnerText = nvm.Module.Inputs[0].ID;
                        displaceInputs.AppendChild(doc.CreateElement("X")).InnerText = nvm.Module.Inputs[1].ID;
                        displaceInputs.AppendChild(doc.CreateElement("Y")).InnerText = nvm.Module.Inputs[2].ID;
                        displaceInputs.AppendChild(doc.CreateElement("Z")).InnerText = nvm.Module.Inputs[3].ID;
                        break;
                    case "Exponent":
                        module.AppendChild(doc.CreateElement("Value")).InnerText = ((Exponent)nvm.Module.LibnoiseModule).Value.ToString();
                        XmlNode expInputs = module.AppendChild(doc.CreateElement("ModuleInputs"));
                        expInputs.AppendChild(doc.CreateElement("Input")).InnerText = nvm.Module.Inputs[0].ID;
                        break;
                    case "Invert":
                        XmlNode invertInputs = module.AppendChild(doc.CreateElement("ModuleInputs"));
                        invertInputs.AppendChild(doc.CreateElement("Input")).InnerText = nvm.Module.Inputs[0].ID;
                        break;
                    case "Max":
                        XmlNode maxInputs = module.AppendChild(doc.CreateElement("ModuleInputs"));
                        maxInputs.AppendChild(doc.CreateElement("Left")).InnerText = nvm.Module.Inputs[0].ID;
                        maxInputs.AppendChild(doc.CreateElement("Right")).InnerText = nvm.Module.Inputs[1].ID;
                        break;
                    case "Min":
                        XmlNode minInputs = module.AppendChild(doc.CreateElement("ModuleInputs"));
                        minInputs.AppendChild(doc.CreateElement("Left")).InnerText = nvm.Module.Inputs[0].ID;
                        minInputs.AppendChild(doc.CreateElement("Right")).InnerText = nvm.Module.Inputs[1].ID;
                        break;
                    case "Multiply":
                        XmlNode multiplyInputs = module.AppendChild(doc.CreateElement("ModuleInputs"));
                        multiplyInputs.AppendChild(doc.CreateElement("Left")).InnerText = nvm.Module.Inputs[0].ID;
                        multiplyInputs.AppendChild(doc.CreateElement("Right")).InnerText = nvm.Module.Inputs[1].ID;
                        break;
                    case "Power":
                        XmlNode powerInputs = module.AppendChild(doc.CreateElement("ModuleInputs"));
                        powerInputs.AppendChild(doc.CreateElement("Left")).InnerText = nvm.Module.Inputs[0].ID;
                        powerInputs.AppendChild(doc.CreateElement("Right")).InnerText = nvm.Module.Inputs[1].ID;
                        break;
                    case "Rotate":
                        module.AppendChild(doc.CreateElement("X")).InnerText = ((Rotate)nvm.Module.LibnoiseModule).X.ToString();
                        module.AppendChild(doc.CreateElement("Y")).InnerText = ((Rotate)nvm.Module.LibnoiseModule).Y.ToString();
                        module.AppendChild(doc.CreateElement("Z")).InnerText = ((Rotate)nvm.Module.LibnoiseModule).Z.ToString();
                        XmlNode rotateInputs = module.AppendChild(doc.CreateElement("ModuleInputs"));
                        rotateInputs.AppendChild(doc.CreateElement("Input")).InnerText = nvm.Module.Inputs[0].ID;
                        break;
                    case "Scale":
                        module.AppendChild(doc.CreateElement("X")).InnerText = ((Scale)nvm.Module.LibnoiseModule).X.ToString();
                        module.AppendChild(doc.CreateElement("Y")).InnerText = ((Scale)nvm.Module.LibnoiseModule).Y.ToString();
                        module.AppendChild(doc.CreateElement("Z")).InnerText = ((Scale)nvm.Module.LibnoiseModule).Z.ToString();
                        XmlNode scaleInputs = module.AppendChild(doc.CreateElement("ModuleInputs"));
                        scaleInputs.AppendChild(doc.CreateElement("Input")).InnerText = nvm.Module.Inputs[0].ID;
                        break;
                    case "ScaleBias":
                        module.AppendChild(doc.CreateElement("Scale")).InnerText = ((ScaleBias)nvm.Module.LibnoiseModule).Scale.ToString();
                        module.AppendChild(doc.CreateElement("Bias")).InnerText = ((ScaleBias)nvm.Module.LibnoiseModule).Bias.ToString();
                        XmlNode scaleBiasInputs = module.AppendChild(doc.CreateElement("ModuleInputs"));
                        scaleBiasInputs.AppendChild(doc.CreateElement("Input")).InnerText = nvm.Module.Inputs[0].ID;
                        break;
                    case "Select":
                        module.AppendChild(doc.CreateElement("Minimum")).InnerText = ((Select)nvm.Module.LibnoiseModule).Minimum.ToString();
                        module.AppendChild(doc.CreateElement("Maximum")).InnerText = ((Select)nvm.Module.LibnoiseModule).Maximum.ToString();
                        module.AppendChild(doc.CreateElement("FallOff")).InnerText = ((Select)nvm.Module.LibnoiseModule).FallOff.ToString();
                        XmlNode selectInputs = module.AppendChild(doc.CreateElement("ModuleInputs"));
                        selectInputs.AppendChild(doc.CreateElement("Primary")).InnerText = nvm.Module.Inputs[0].ID;
                        selectInputs.AppendChild(doc.CreateElement("Secondary")).InnerText = nvm.Module.Inputs[1].ID;
                        selectInputs.AppendChild(doc.CreateElement("Controller")).InnerText = nvm.Module.Inputs[2].ID;
                        break;
                    case "Subtract":
                        XmlNode subtractInputs = module.AppendChild(doc.CreateElement("ModuleInputs"));
                        subtractInputs.AppendChild(doc.CreateElement("Left")).InnerText = nvm.Module.Inputs[0].ID;
                        subtractInputs.AppendChild(doc.CreateElement("Right")).InnerText = nvm.Module.Inputs[1].ID;
                        break;
                    case "Terrace":
                        XmlNode terraceControlPointInputs = module.AppendChild(doc.CreateElement("ControlPoints"));
                        foreach (double cp in ((Terrace)nvm.Module.LibnoiseModule).ControlPoints)
                        {
                            terraceControlPointInputs.AppendChild(doc.CreateElement("ControlPoint")).InnerText = cp.ToString();
                        }
                        XmlNode terraceInputs = module.AppendChild(doc.CreateElement("ModuleInputs"));
                        terraceInputs.AppendChild(doc.CreateElement("Input")).InnerText = nvm.Module.Inputs[0].ID;
                        break;
                    case "Translate":
                        module.AppendChild(doc.CreateElement("X")).InnerText = ((Translate)nvm.Module.LibnoiseModule).X.ToString();
                        module.AppendChild(doc.CreateElement("Y")).InnerText = ((Translate)nvm.Module.LibnoiseModule).Y.ToString();
                        module.AppendChild(doc.CreateElement("Z")).InnerText = ((Translate)nvm.Module.LibnoiseModule).Z.ToString();
                        XmlNode translateInputs = module.AppendChild(doc.CreateElement("ModuleInputs"));
                        translateInputs.AppendChild(doc.CreateElement("Input")).InnerText = nvm.Module.Inputs[0].ID;
                        break;
                    case "Turbulence":
                        module.AppendChild(doc.CreateElement("Frequency")).InnerText = ((Turbulence)nvm.Module.LibnoiseModule).Frequency.ToString();
                        module.AppendChild(doc.CreateElement("Power")).InnerText = ((Turbulence)nvm.Module.LibnoiseModule).Power.ToString();
                        module.AppendChild(doc.CreateElement("Roughness")).InnerText = ((Turbulence)nvm.Module.LibnoiseModule).Roughness.ToString();
                        module.AppendChild(doc.CreateElement("Seed")).InnerText = ((Turbulence)nvm.Module.LibnoiseModule).Seed.ToString();
                        XmlNode turbInputs = module.AppendChild(doc.CreateElement("ModuleInputs"));
                        turbInputs.AppendChild(doc.CreateElement("Input")).InnerText = nvm.Module.Inputs[0].ID;
                        break;
                    case "Final":
                        XmlNode finalInputs = module.AppendChild(doc.CreateElement("ModuleInputs"));
                        finalInputs.AppendChild(doc.CreateElement("Input")).InnerText = nvm.Module.Inputs[0].ID;
                        break;
                    default:
                        break;
                }
                root.AppendChild(module);
            }

            return doc;
        }
        public static StringBuilder ExportToClass(ImpObservableCollection<object> nodes)
        {
            StringBuilder sb = new StringBuilder();
            string final = "";

            sb.AppendLine("using System;");
            sb.AppendLine("using LibNoise;");
            sb.AppendLine("using LibNoise.Generator;");
            sb.AppendLine("using LibNoise.Operator;");
            sb.AppendLine("");
            sb.AppendLine("namespace Libnoise.CustomModule");
            sb.AppendLine("{");
            sb.AppendLine("    public class LibnoiseModule");
            sb.AppendLine("    {");
            sb.AppendLine("        public static ModuleBase CustomNoiseModule()");
            sb.AppendLine("        {");

            foreach (Object o in nodes)
            {
                NodeViewModel nvm = (NodeViewModel)o;

                // create obeject instantiations
                switch (nvm.Module.ModuleType)
                {
                    case "Billow":
                        sb.AppendLine("            Billow " + nvm.Module.ID + " = new Billow();");
                        sb.AppendLine("            " + nvm.Module.ID + ".Frequency = " + ((Billow)nvm.Module.LibnoiseModule).Frequency.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".Lacunarity = " + ((Billow)nvm.Module.LibnoiseModule).Lacunarity.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".OctaveCount = " + ((Billow)nvm.Module.LibnoiseModule).OctaveCount.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".Persistence = " + ((Billow)nvm.Module.LibnoiseModule).Persistence.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".Quality = QualityMode." + ((Billow)nvm.Module.LibnoiseModule).Quality.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".Seed = " + ((Billow)nvm.Module.LibnoiseModule).Seed.ToString() + ";");
                        sb.AppendLine("");
                        break;
                    case "Checker":
                        sb.AppendLine("            Checker " + nvm.Module.ID + " = new Checker();");
                        sb.AppendLine("");
                        break;
                    case "Const":
                        sb.AppendLine("            Const " + nvm.Module.ID + " = new Const();");
                        sb.AppendLine("            " + nvm.Module.ID + ".Value = " + ((Const)nvm.Module.LibnoiseModule).Value.ToString() + ";");
                        sb.AppendLine("");
                        break;
                    case "Cylinders":
                        sb.AppendLine("            Cylinders " + nvm.Module.ID + " = new Cylinders();");
                        sb.AppendLine("            " + nvm.Module.ID + ".Frequency = " + ((Cylinders)nvm.Module.LibnoiseModule).Frequency.ToString() + ";");
                        sb.AppendLine("");
                        break;
                    case "Perlin":
                        sb.AppendLine("            Perlin " + nvm.Module.ID + " = new Perlin();");
                        sb.AppendLine("            " + nvm.Module.ID + ".Frequency = " + ((Perlin)nvm.Module.LibnoiseModule).Frequency.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".Lacunarity = " + ((Perlin)nvm.Module.LibnoiseModule).Lacunarity.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".OctaveCount = " + ((Perlin)nvm.Module.LibnoiseModule).OctaveCount.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".Persistence = " + ((Perlin)nvm.Module.LibnoiseModule).Persistence.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".Quality = QualityMode." + ((Perlin)nvm.Module.LibnoiseModule).Quality.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".Seed = " + ((Perlin)nvm.Module.LibnoiseModule).Seed.ToString() + ";");
                        sb.AppendLine("");
                        break;
                    case "RidgedMultifractal":
                        sb.AppendLine("            RidgedMultifractal " + nvm.Module.ID + " = new RidgedMultifractal();");
                        sb.AppendLine("            " + nvm.Module.ID + ".Frequency = " + ((RidgedMultifractal)nvm.Module.LibnoiseModule).Frequency.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".Lacunarity = " + ((RidgedMultifractal)nvm.Module.LibnoiseModule).Lacunarity.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".OctaveCount = " + ((RidgedMultifractal)nvm.Module.LibnoiseModule).OctaveCount.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".Quality = QualityMode." + ((RidgedMultifractal)nvm.Module.LibnoiseModule).Quality.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".Seed = " + ((RidgedMultifractal)nvm.Module.LibnoiseModule).Seed.ToString() + ";");
                        sb.AppendLine("");
                        break;
                    case "Spheres":
                        sb.AppendLine("            Spheres " + nvm.Module.ID + " = new Spheres();");
                        sb.AppendLine("            " + nvm.Module.ID + ".Frequency = " + ((Spheres)nvm.Module.LibnoiseModule).Frequency.ToString() + ";");
                        sb.AppendLine("");
                        break;
                    case "Voronoi":
                        sb.AppendLine("            Voronoi " + nvm.Module.ID + " = new Voronoi();");
                        sb.AppendLine("            " + nvm.Module.ID + ".Frequency = " + ((Voronoi)nvm.Module.LibnoiseModule).Frequency.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".Displacement = " + ((Voronoi)nvm.Module.LibnoiseModule).Displacement.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".UseDistance = " + ((Voronoi)nvm.Module.LibnoiseModule).UseDistance.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".Seed = " + ((Voronoi)nvm.Module.LibnoiseModule).Seed.ToString() + ";");
                        sb.AppendLine("");
                        break;
                    case "Abs":
                        sb.AppendLine("            Abs " + nvm.Module.ID + " = new Abs();");
                        sb.AppendLine("");
                        break;
                    case "Add":
                        sb.AppendLine("            Add " + nvm.Module.ID + " = new Add();");
                        sb.AppendLine("");
                        break;
                    case "Blend":
                        sb.AppendLine("            Blend " + nvm.Module.ID + " = new Blend();");
                        sb.AppendLine("");
                        break;
                    case "Cache":
                        sb.AppendLine("            Cache " + nvm.Module.ID + " = new Cache();");
                        sb.AppendLine("");
                        break;
                    case "Clamp":
                        sb.AppendLine("            Clamp " + nvm.Module.ID + " = new Clamp();");
                        sb.AppendLine("            " + nvm.Module.ID + ".Maximum = " + ((Clamp)nvm.Module.LibnoiseModule).Maximum.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".Minimum = " + ((Clamp)nvm.Module.LibnoiseModule).Minimum.ToString() + ";");
                        sb.AppendLine("");
                        break;
                    case "Curve":
                        sb.AppendLine("            Curve " + nvm.Module.ID + " = new Curve();");

                        foreach (CurveControlPoint cp in ((Curve)nvm.Module.LibnoiseModule).ControlPoints)
                        {
                            sb.AppendLine("            " + nvm.Module.ID + ".Add(" + cp.X + ", " + cp.Y + ");");
                        }

                        sb.AppendLine("");
                        break;
                    case "Displace":
                        sb.AppendLine("            Displace " + nvm.Module.ID + " = new Displace();");
                        sb.AppendLine("");
                        break;
                    case "Exponent":
                        sb.AppendLine("            Exponent " + nvm.Module.ID + " = new Exponent();");
                        sb.AppendLine("            " + nvm.Module.ID + ".Value = " + ((Exponent)nvm.Module.LibnoiseModule).Value.ToString() + ";");
                        sb.AppendLine("");
                        break;
                    case "Invert":
                        sb.AppendLine("            Invert " + nvm.Module.ID + " = new Invert();");
                        sb.AppendLine("");
                        break;
                    case "Max":
                        sb.AppendLine("            Max " + nvm.Module.ID + " = new Max();");
                        sb.AppendLine("");
                        break;
                    case "Min":
                        sb.AppendLine("            Min " + nvm.Module.ID + " = new Min();");
                        sb.AppendLine("");
                        break;
                    case "Multiply":
                        sb.AppendLine("            Multiply " + nvm.Module.ID + " = new Multiply();");
                        sb.AppendLine("");
                        break;
                    case "Power":
                        sb.AppendLine("            Power " + nvm.Module.ID + " = new Power();");
                        sb.AppendLine("");
                        break;
                    case "Rotate":
                        sb.AppendLine("            Rotate " + nvm.Module.ID + " = new Rotate();");
                        sb.AppendLine("            " + nvm.Module.ID + ".X = " + ((Rotate)nvm.Module.LibnoiseModule).X.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".Y = " + ((Rotate)nvm.Module.LibnoiseModule).Y.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".Z = " + ((Rotate)nvm.Module.LibnoiseModule).Z.ToString() + ";");
                        sb.AppendLine("");
                        break;
                    case "Scale":
                        sb.AppendLine("            Scale " + nvm.Module.ID + " = new Scale();");
                        sb.AppendLine("            " + nvm.Module.ID + ".X = " + ((Scale)nvm.Module.LibnoiseModule).X.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".Y = " + ((Scale)nvm.Module.LibnoiseModule).Y.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".Z = " + ((Scale)nvm.Module.LibnoiseModule).Z.ToString() + ";");
                        sb.AppendLine("");
                        break;
                    case "ScaleBias":
                        sb.AppendLine("            ScaleBias " + nvm.Module.ID + " = new ScaleBias();");
                        sb.AppendLine("            " + nvm.Module.ID + ".Scale = " + ((ScaleBias)nvm.Module.LibnoiseModule).Scale.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".Bias = " + ((ScaleBias)nvm.Module.LibnoiseModule).Bias.ToString() + ";");
                        sb.AppendLine("");
                        break;
                    case "Select":
                        sb.AppendLine("            Select " + nvm.Module.ID + " = new Select();");
                        sb.AppendLine("            " + nvm.Module.ID + ".Minimum = " + ((Select)nvm.Module.LibnoiseModule).Minimum.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".Maximum = " + ((Select)nvm.Module.LibnoiseModule).Maximum.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".FallOff = " + ((Select)nvm.Module.LibnoiseModule).FallOff.ToString() + ";");
                        sb.AppendLine("");
                        break;
                    case "Subtract":
                        sb.AppendLine("            Subtract " + nvm.Module.ID + " = new Subtract();");
                        sb.AppendLine("");
                        break;
                    case "Terrace":
                        sb.AppendLine("            Terrace " + nvm.Module.ID + " = new Terrace();");

                        foreach (double cp in ((Terrace)nvm.Module.LibnoiseModule).ControlPoints)
                        {
                            sb.AppendLine("            " + nvm.Module.ID + ".Add(" + cp + ");");
                        }

                        sb.AppendLine("");
                        break;
                    case "Translate":
                        sb.AppendLine("            Translate " + nvm.Module.ID + " = new Translate();");
                        sb.AppendLine("            " + nvm.Module.ID + ".X = " + ((Scale)nvm.Module.LibnoiseModule).X.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".Y = " + ((Scale)nvm.Module.LibnoiseModule).Y.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".Z = " + ((Scale)nvm.Module.LibnoiseModule).Z.ToString() + ";");
                        sb.AppendLine("");
                        break;
                    case "Turbulence":
                        sb.AppendLine("            Turbulence " + nvm.Module.ID + " = new Turbulence();");
                        sb.AppendLine("            " + nvm.Module.ID + ".Frequency = " + ((Turbulence)nvm.Module.LibnoiseModule).Frequency.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".Power = " + ((Turbulence)nvm.Module.LibnoiseModule).Power.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".Roughness = " + ((Turbulence)nvm.Module.LibnoiseModule).Roughness.ToString() + ";");
                        sb.AppendLine("            " + nvm.Module.ID + ".Seed = " + ((Turbulence)nvm.Module.LibnoiseModule).Seed.ToString() + ";");
                        sb.AppendLine("");
                        break;
                    case "Final":
                        final = nvm.Module.ID;
                        sb.AppendLine("            Cache " + nvm.Module.ID + " = new Cache();");
                        sb.AppendLine("");
                        break;
                    default:
                        break;
                }
            }

            // its pretty ugly, but now that we're 100% sure all of the objects have been instantiated, we can
            // assign the module links

            foreach (Object o in nodes)
            {
                NodeViewModel nvm = (NodeViewModel)o;

                if (nvm.Module.Inputs[0] != null) sb.AppendLine("            " + nvm.Module.ID + ".Modules[0] = " + nvm.Module.Inputs[0].ID + ";");
                if (nvm.Module.Inputs[1] != null) sb.AppendLine("            " + nvm.Module.ID + ".Modules[1] = " + nvm.Module.Inputs[1].ID + ";");
                if (nvm.Module.Inputs[2] != null) sb.AppendLine("            " + nvm.Module.ID + ".Modules[2] = " + nvm.Module.Inputs[2].ID + ";");
                if (nvm.Module.Inputs[3] != null) sb.AppendLine("            " + nvm.Module.ID + ".Modules[3] = " + nvm.Module.Inputs[3].ID + ";");
                if (nvm.Module.Inputs[4] != null) sb.AppendLine("            " + nvm.Module.ID + ".Modules[4] = " + nvm.Module.Inputs[4].ID + ";");
                sb.AppendLine("");
            }

            sb.AppendLine("            return " + final + ";");
            sb.AppendLine("        }");
            sb.AppendLine("    }");
            sb.AppendLine("}");

            return sb;
        }
Exemplo n.º 8
0
 public AddChoiceCommand(CommandExecutor cmdExec, NodeViewModel node, ImpObservableCollection <ConnectorViewModel> outgoingConnectors, DialogueEntry entry, Dialogue dialogue, string content)
 {
     _cmdExec = cmdExec;
     _cmd     = new NodeViewModel.AddChoiceUndoableCommand(_cmdExec, node, outgoingConnectors, entry, dialogue, content);
 }