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)); }
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(); }
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(); }
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; }
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); }