private void InitIoBranches(int branchCount, NodeConnector connector, ICollection <NodeItem> branchList, IList <PropertyInfo> blocks, bool isInput) { if (branchCount == 1) { connector.Enabled = true; branchList.Add(m_iconItem); } else { for (int i = 0; i < branchCount; i++) { string name = (i + 1) + ""; if (Node is MyWorkingNode) { name = blocks[i].Name; } NodeLabelItem branch = new NodeLabelItem(MyProject.ShortenMemoryBlockName(name), isInput, !isInput) { Tag = i, IsPassive = true }; branchList.Add(branch); AddItem(branch); } } }
private Node findNode(GraphControl ctrl, String name) { foreach (Node n in ctrl.Nodes) { foreach (NodeItem i in n.Items) { if (i.Name == "NodeName") { if (i.GetType().ToString() == "Graph.Items.NodeTextBoxItem") { NodeTextBoxItem item = i as NodeTextBoxItem; if (item.Text == name) { return(n); } } if (i.GetType().ToString() == "Graph.Items.NodeLabelItem") { NodeLabelItem item = i as NodeLabelItem; if (item.Text == name) { return(n); } } } } } return(null); }
private String getEndNodeScript(String convName, Node node) { String script = ""; String nodename = ""; List<NodeItem> items = (List<NodeItem>)node.Items; foreach(NodeItem item in items) { if(item.Name == "NodeName") { NodeLabelItem nameitem = item as NodeLabelItem; nodename = nameitem.Text; } } script += "\tnew ScriptObject(" + convName + "_" + nodename + ") {" + Environment.NewLine; script += "\t\tclass = \"ConversationEnd\";" + Environment.NewLine; script += "\t\tcanSave = \"1\";" + Environment.NewLine; script += "\t\tcanSaveDynamicFields = \"1\";" + Environment.NewLine; NodeTextBoxItem tb = (NodeTextBoxItem)items[0]; script += "\t\t\tdisplayText = \"" + conditionText(tb.Text) + "\";" + Environment.NewLine; tb = (NodeTextBoxItem)items[2]; if (tb.Text != "Conversation Exit Script") script += "\t\t\tscriptMethod = \"" + conditionText(tb.Text) + ";\";" + Environment.NewLine; script += "\t};" + Environment.NewLine; m_log.WriteLine("Generated Conversation End Node" + nodename); return script; }
private void AddSpecialPins() { if (Event.ProvidesAttackDamage) { var AttackDamagePin = new NodeLabelItem("Attack Damage", NodeItemType.Output); AddItem(AttackDamagePin); } }
protected virtual void AddOutputBranch() { NodeLabelItem branch = new NodeLabelItem("Output " + (m_outputBranches.Count + 1), false, true); branch.Tag = m_outputBranches.Count; m_outputBranches.Add(branch); AddItem(branch); }
protected virtual void AddInputBranch() { NodeLabelItem branch = new NodeLabelItem("Input " + (m_inputBranches.Count + 1), true, false) { Tag = m_inputBranches.Count, IsPassive = true }; m_inputBranches.Add(branch); AddItem(branch); }
private void AddOutputLabel() { int i = OutputLabels.Count; var outputLabel = new NodeLabelItem($"Output {i + 1}", false, true) { Tag = i }; AddItem(outputLabel); OutputLabels.Add(outputLabel); }
private void AddInputLabel() { int i = InputLabels.Count; var inputLabel = new NodeLabelItem($"Input {i + 1}", true, false) { Tag = i }; AddItem(inputLabel); InputLabels.Add(inputLabel); }
private void lblStartNode_MouseDown(object sender, MouseEventArgs e) { var node = new Node("Conversation Start"); var startLabel = new NodeLabelItem("Conversation_Start", NodeIOMode.Output) { Tag = TagType.LABEL }; startLabel.Name = "NodeName"; node.AddItem(startLabel); this.DoDragDrop(node, DragDropEffects.Copy); }
public Node CreateNode() { Node outputNode = new Node(GetNodeName()); NodeItem item = new NodeLabelItem("Output", true, false, new[] { typeof(ShaderTypes.float4) }, null); item.Tag = "out"; outputNode.AddItem(item); outputNode.ParentModule = this; return(outputNode); }
private bool validateGraph() { List <Node> nodes = (List <Node>)graphCtrl.Nodes; if (nodes.Count < 1) { MessageBox.Show("There is nothing to save.", "Graph Empty"); return(false); } if (!checkContents(nodes)) { MessageBox.Show("There are no conversation nodes in this graph.", "Graph Incomplete"); return(false); } if (!checkConnections(nodes)) { MessageBox.Show("You have unconnected inputs or outputs in your conversation graph. Please review your graph and ensure all node inputs and outputs are connected.", "Check Connections"); return(false); } List <String> names = new List <string>(); foreach (Node node in nodes) { foreach (NodeItem item in node.Items) { if (item.Name == "NodeName") { String name = ""; if (item.GetType().ToString() == "Graph.Items.NodeTextBoxItem") { NodeTextBoxItem i = item as NodeTextBoxItem; name = i.Text; } if (item.GetType().ToString() == "Graph.Items.NodeLabelItem") { NodeLabelItem i = item as NodeLabelItem; name = i.Text; } if (names.Contains(name)) { MessageBox.Show("Two or more nodes have the same name. Node names must be unique.", "Duplicate Nodes Detected"); return(false); } names.Add(name); } } } return(true); }
private void RemoveOutputLabel() { NodeLabelItem lastOutputLabel = OutputLabels.Last(); if (lastOutputLabel.Output.HasConnection) { foreach (var connectionView in lastOutputLabel.Output.Connectors.ToList()) { Owner.Disconnect(connectionView); } } RemoveItem(lastOutputLabel); OutputLabels.RemoveAt(OutputLabels.Count - 1); }
protected MyNodeView(MyNodeConfig nodeInfo, GraphControl owner) : base("") { NodeInfo = nodeInfo; Owner = owner; m_icon = nodeInfo.BigImage; m_iconItem = new NodeImageItem(m_icon, 48, 48, false, false); m_iconItem.Tag = 0; m_descItem = new NodeLabelItem(""); AddItem(m_iconItem); AddItem(m_descItem); }
private void lblEndNode_MouseDown(object sender, MouseEventArgs e) { var node = new Node("Conversation End"); node.AddItem(new NodeTextBoxItem("Enter text")); String name = "Conversation_End_" + getEndNodeCount().ToString().PadLeft(3, '0'); var endLabel = new NodeLabelItem(name, NodeIOMode.Input) { Tag = TagType.TEXTBOX }; endLabel.Name = "NodeName"; node.AddItem(endLabel); node.AddItem(new NodeTextBoxItem(m_currentPluginSettings.Attributes["[Default]"]["DEFAULTEXITMETHOD"])); this.DoDragDrop(node, DragDropEffects.Copy); }
private void lblConvoNode_MouseDown(object sender, MouseEventArgs e) { List <Node> nodes = (List <Node>)graphCtrl.Nodes; String nodeName = m_settings.Attributes["[Default]"]["DEFAULTNODENAME"] + "_" + getConvNodeCount().ToString().PadLeft(4, '0'); var node = new Node("Conversation Node"); var nodeNameItem = new NodeTextBoxItem(nodeName); nodeNameItem.Name = "NodeName"; node.AddItem(nodeNameItem); NodeTextBoxItem displayText = new NodeTextBoxItem("Enter NPC text", NodeIOMode.None); displayText.Name = "DisplayText"; node.AddItem(displayText); var inputLabel = new NodeLabelItem("Conversation input", NodeIOMode.Input) { Tag = TagType.LABEL }; inputLabel.Name = nodeName + "_in"; node.AddItem(inputLabel); var editNode = new NodeLabelItem("Click Here To Edit Output List"); editNode.Name = "EditNodeItem"; editNode.Clicked += new EventHandler <NodeItemEventArgs>(editOutputListNode_MouseDown); node.AddItem(editNode); NodeCompositeItem firstButton = new NodeCompositeItem(NodeIOMode.Output) { Tag = TagType.TEXTBOX }; firstButton.Name = "button_1"; ItemTextBoxPart btnText = new ItemTextBoxPart("Enter player text"); btnText.Name = "ConvText"; ItemTextBoxPart btnMethod = new ItemTextBoxPart("Enter script method"); btnMethod.Name = "ConvMethod"; firstButton.AddPart(btnText); firstButton.AddPart(btnMethod); firstButton.Clicked += new EventHandler <NodeItemEventArgs>(editConvNode_MouseDown); node.AddItem(firstButton); this.DoDragDrop(node, DragDropEffects.Copy); }
private String getStartNodeScript(String convName, Node node) { String script = ""; List<NodeItem> items = (List<NodeItem>)node.Items; NodeLabelItem linkItem = (NodeLabelItem)items[0]; script += "\tnew ScriptObject(" + convName + "_" + linkItem.Text + ") {" + Environment.NewLine; script += "\t\tclass = \"ConversationStart\";" + Environment.NewLine; script += "\t\tcanSave = \"1\";" + Environment.NewLine; script += "\t\tcanSaveDynamicFields = \"1\";" + Environment.NewLine; script += "\t\t\tnumOutLinks = 1;" + Environment.NewLine; List<NodeConnection> conns = (List<NodeConnection>)linkItem.Node.Connections; NodeConnection outconn = conns[0]; List<NodeItem> targetItemList = (List<NodeItem>)outconn.To.Node.Items; NodeTextBoxItem targetItem = (NodeTextBoxItem)targetItemList[0]; script += "\t\t\toutLink0 = " + convName + "_" + targetItem.Text + ";" + Environment.NewLine; script += "\t};" + Environment.NewLine; m_log.WriteLine("Generated Conversation Start node"); return script; }
protected MyNodeView(MyNodeConfig nodeConfig, GraphControl owner) : base("") { Owner = owner; Config = nodeConfig; m_icon = nodeConfig.BigImage; m_iconItem = new NodeImageItem(m_icon, 48, 48, false, false) { IsPassive = true, Tag = 0 }; m_descItem = new NodeLabelItem("") { IsPassive = true }; AddItem(m_iconItem); AddItem(m_descItem); }
protected virtual void AddOutputBranch() { string name = null; if (Node is IMyVariableBranchViewWithNamesNode) { name = ((IMyVariableBranchViewWithNamesNode)Node).GetOutputBranchName(m_outputBranches.Count); } if (name == null) { name = "Output " + (m_outputBranches.Count + 1); } NodeLabelItem branch = new NodeLabelItem(name, false, true) { Tag = m_outputBranches.Count, IsPassive = true }; m_outputBranches.Add(branch); AddItem(branch); }
public Node CreateNode() { Node outputNode = new Node(GetNodeName()); var hposNode = new NodeLabelItem("hpos", false, true, null, new[] { typeof(ShaderTypes.float4) }); var uv0Node = new NodeLabelItem("uv0", false, true, null, new[] { typeof(ShaderTypes.float2) }); var uv1Node = new NodeLabelItem("uv1", false, true, null, new[] { typeof(ShaderTypes.float2) }); var uv2Node = new NodeLabelItem("uv2", false, true, null, new[] { typeof(ShaderTypes.float2) }); var uv3Node = new NodeLabelItem("uv3", false, true, null, new[] { typeof(ShaderTypes.float2) }); var wsEyeRayNode = new NodeLabelItem("wsEyeRay", false, true, null, new[] { typeof(ShaderTypes.float3) }); outputNode.AddItem(hposNode); outputNode.AddItem(uv0Node); outputNode.AddItem(uv1Node); outputNode.AddItem(uv2Node); outputNode.AddItem(uv3Node); outputNode.AddItem(wsEyeRayNode); outputNode.ParentModule = this; outputNode.Tag = "IN."; return(outputNode); }
public Node CreateNode() { Node addColorNode = new Node(GetNodeName()); addColorNode.Location = new Point(200, 50); var color = new NodeLabelItem("Color", true, false, new[] { typeof(ShaderTypes.float3), typeof(ShaderTypes.float4) }, null) { Tag = 1 }; var imageIn = new NodeLabelItem("Image", true, false, new[] { typeof(ShaderTypes.sampler2D) }, null) { Tag = 2 }; var imageOut = new NodeImageItem(Properties.Resources.DefaultImage, 64, 64, false, true, null, new[] { typeof(Image) }) { Tag = 3 }; addColorNode.AddItem(color); addColorNode.AddItem(imageIn); addColorNode.AddItem(imageOut); addColorNode.ParentModule = this; return(addColorNode); }
private String getNodeName(Node node) { String name = ""; foreach (NodeItem item in node.Items) { if (item.Name == "NodeName") { if (item.GetType().ToString() == "Graph.Items.NodeTextBoxItem") { NodeTextBoxItem i = item as NodeTextBoxItem; name = i.Text; break; } if (item.GetType().ToString() == "Graph.Items.NodeLabelItem") { NodeLabelItem i = item as NodeLabelItem; name = i.Text; break; } } } return(name); }
protected virtual void InitBranches() { MyNodeInfo nodeInfo = Node.GetInfo(); foreach (PropertyInfo signalInfo in nodeInfo.RegisteredSignals) { MySignal signal = (MySignal)signalInfo.GetValue(Node); MySignalItem signalItem = new MySignalItem(signal); m_signals.Add(signalItem); AddItem(signalItem); } if (Node.InputBranches == 1) { m_iconItem.Input.Enabled = true; m_inputBranches.Add(m_iconItem); } else { for (int i = 0; i < Node.InputBranches; i++) { string name = (i + 1) + ""; if (Node is MyWorkingNode) { name = Node.GetInfo().InputBlocks[i].Name; } NodeLabelItem branch = new NodeLabelItem(MyProject.ShortenMemoryBlockName(name), true, false); branch.Tag = i; m_inputBranches.Add(branch); AddItem(branch); } } if (Node.OutputBranches == 1) { m_iconItem.Output.Enabled = true; m_outputBranches.Add(m_iconItem); } else { for (int i = 0; i < Node.OutputBranches; i++) { string name = (i + 1) + ""; if (Node is MyWorkingNode) { name = Node.GetInfo().OutputBlocks[i].Name; } NodeLabelItem branch = new NodeLabelItem(MyProject.ShortenMemoryBlockName(name), false, true); branch.Tag = i; m_outputBranches.Add(branch); AddItem(branch); } } }
public CGraphFields(GraphControl control, ObjectIDGenerator idGen) { Dictionary <String, CNodeItemFields> idFieldMap = new Dictionary <String, CNodeItemFields>(); Dictionary <NodeItem, String> idItemMap = new Dictionary <NodeItem, String>(); bool first = false; id = idGen.GetId(control, out first).ToString(); name = control.Name; Nodes = new List <CNodeFields>(); List <Node> nodes = (List <Node>)control.Nodes; foreach (Node node in nodes) { CNodeFields nFields = new CNodeFields(); nFields.Title = node.Title; nFields.name = getNodeName(node); nFields.Location = node.Location; nFields.Items = new List <CNodeItemFields>(); bool nfirst = false; nFields.id = idGen.GetId(nFields, out nfirst).ToString(); foreach (NodeItem item in node.Items) { CNodeItemFields iFields = new CNodeItemFields(); bool ifirst = false; iFields.id = idGen.GetId(iFields, out ifirst).ToString(); String fName = nFields.name + ":" + (item.Name == null ? iFields.id : item.Name); idFieldMap.Add(fName, iFields); idItemMap.Add(item, fName); iFields.Input = new List <CConnectionFields>(); iFields.Output = new List <CConnectionFields>(); iFields.ItemParts = new List <CItemPartFields>(); iFields.name = fName; iFields.ParentNode = nFields.id; if (item.Tag != null) { iFields.Tag = item.Tag.GetType().ToString(); } iFields.IOMode = getIOMode(item); iFields.ItemType = item.GetType().ToString(); switch (iFields.ItemType) { case "Graph.Items.NodeTextBoxItem": { NodeTextBoxItem temp = item as NodeTextBoxItem; iFields.Text = temp.Text; } break; case "Graph.Items.NodeLabelItem": { NodeLabelItem temp = item as NodeLabelItem; iFields.Text = temp.Text; } break; case "Graph.Items.NodeCompositeItem": { NodeCompositeItem temp = item as NodeCompositeItem; foreach (ItemPart part in temp.Parts) { CItemPartFields pFields = new CItemPartFields(); bool pfirst = false; pFields.id = idGen.GetId(pFields, out pfirst).ToString(); pFields.name = part.Name; pFields.PartType = part.GetType().ToString(); switch (pFields.PartType) { case "Graph.Items.ItemTextBoxPart": { ItemTextBoxPart tempPart = part as ItemTextBoxPart; pFields.Text = tempPart.Text; } break; default: break; } iFields.ItemParts.Add(pFields); } } break; } nFields.Items.Add(iFields); } foreach (NodeItem item in node.Items) { // now get connection info String iid = idItemMap[item]; if (item.Input.Enabled && item.Input.HasConnection) { foreach (NodeConnection conn in item.Input.Connectors) { CConnectionFields cFields = new CConnectionFields(); bool cfirst = false; cFields.id = idGen.GetId(cFields, out cfirst).ToString(); Node nFrom = conn.From.Node; String fromName = ""; foreach (NodeItem nItem in nFrom.Items) { if (nItem.Name == "NodeName") { if (nItem.GetType().ToString() == "Graph.Items.NodeTextBoxItem") { NodeTextBoxItem i = nItem as NodeTextBoxItem; fromName = i.Text; } if (nItem.GetType().ToString() == "Graph.Items.NodeLabelItem") { NodeLabelItem i = nItem as NodeLabelItem; fromName = i.Text; } } } Node nTo = conn.To.Node; String toName = ""; foreach (NodeItem nItem in nTo.Items) { if (nItem.Name == "NodeName") { if (nItem.GetType().ToString() == "Graph.Items.NodeTextBoxItem") { NodeTextBoxItem i = nItem as NodeTextBoxItem; toName = i.Text; } if (nItem.GetType().ToString() == "Graph.Items.NodeLabelItem") { NodeLabelItem i = nItem as NodeLabelItem; toName = i.Text; } } } if (conn.Tag != null) { cFields.Tag = conn.Tag.GetType().ToString(); } else if (item.Tag != null) { cFields.Tag = item.Tag.GetType().ToString(); } cFields.name = (conn.Name == null ? cFields.id : conn.Name); cFields.From = fromName + ":" + conn.From.Item.Name; cFields.To = toName + ":" + conn.To.Item.Name; idFieldMap[iid].Input.Add(cFields); } } if (item.Output.Enabled && item.Output.HasConnection) { foreach (NodeConnection conn in item.Output.Connectors) { CConnectionFields cFields = new CConnectionFields(); bool cfirst = false; cFields.id = idGen.GetId(cFields, out cfirst).ToString(); Node nFrom = conn.From.Node; String fromName = ""; foreach (NodeItem nItem in nFrom.Items) { if (nItem.Name == "NodeName") { if (nItem.GetType().ToString() == "Graph.Items.NodeTextBoxItem") { NodeTextBoxItem i = nItem as NodeTextBoxItem; fromName = i.Text; } if (nItem.GetType().ToString() == "Graph.Items.NodeLabelItem") { NodeLabelItem i = nItem as NodeLabelItem; fromName = i.Text; } } } Node nTo = conn.To.Node; String toName = ""; foreach (NodeItem nItem in nTo.Items) { if (nItem.Name == "NodeName") { if (nItem.GetType().ToString() == "Graph.Items.NodeTextBoxItem") { NodeTextBoxItem i = nItem as NodeTextBoxItem; toName = i.Text; } if (nItem.GetType().ToString() == "Graph.Items.NodeLabelItem") { NodeLabelItem i = nItem as NodeLabelItem; toName = i.Text; } } } if (conn.Tag != null) { cFields.Tag = conn.Tag.GetType().ToString(); } else if (item.Tag != null) { cFields.Tag = item.Tag.GetType().ToString(); } cFields.name = (conn.Name == null ? cFields.id : conn.Name); cFields.From = fromName + ":" + conn.From.Item.Name; cFields.To = toName + ":" + conn.To.Item.Name; idFieldMap[iid].Input.Add(cFields); } } } Nodes.Add(nFields); } }
private String getConvoNodeScript(String convName, Node node) { String script = ""; List<NodeItem> items = (List<NodeItem>)node.Items; NodeTextBoxItem nameItem = (NodeTextBoxItem)items[0]; script += "\tnew ScriptObject(" + convName + "_" + nameItem.Text + ") {" + Environment.NewLine; script += "\t\tclass = \"ConversationNode\";" + Environment.NewLine; script += "\t\tcanSave = \"1\";" + Environment.NewLine; script += "\t\tcanSaveDynamicFields = \"1\";" + Environment.NewLine; int outNodeCount = items.Count - int.Parse(m_settings.Attributes["[Default]"]["CONVOOUTNODESTART"]); int start = int.Parse(m_settings.Attributes["[Default]"]["CONVOOUTNODESTART"]); NodeTextBoxItem nodeText = (NodeTextBoxItem)items[1]; script += "\t\t\tdisplayText = \"" + conditionText(nodeText.Text) + "\";" + Environment.NewLine; script += "\t\t\tnumOutLinks = " + outNodeCount + ";" + Environment.NewLine; String target = ""; List<String> foundNodes = new List<String>(); for (int i = start; i < items.Count; i++) { NodeCompositeItem textItem = (NodeCompositeItem)items[i]; String Text = ""; String Method = ""; foreach(ItemTextBoxPart part in textItem.Parts) { if (part.Name == "ConvText") Text = part.Text; if (part.Name == "ConvMethod") Method = part.Text; } NodeOutputConnector conn = (NodeOutputConnector)textItem.Output; foreach (NodeConnection con in conn.Connectors) { bool found = false; if (con.To.Node == textItem.Node) continue; foreach (NodeConnection targetCon in con.To.Node.Connections) { if (targetCon.From.Item != textItem) continue; foreach (NodeItem item in con.To.Node.Items) { if (item.Name == "NodeName" && item.GetType().ToString() == "Graph.Items.NodeTextBoxItem") { NodeTextBoxItem targetItem = (NodeTextBoxItem)item; if (foundNodes.Contains(targetItem.Text)) continue; target = targetItem.Text; foundNodes.Add(target); found = true; } if (item.Name == "NodeName" && item.GetType().ToString() == "Graph.Items.NodeLabelItem") { NodeLabelItem targetItem = (NodeLabelItem)item; if (foundNodes.Contains(targetItem.Text)) continue; target = targetItem.Text; foundNodes.Add(target); found = true; } if (found) continue; } } } script += "\t\t\tbutton" + (i - start).ToString() + "next = " + convName + "_" + target + ";" + Environment.NewLine; script += "\t\t\tbutton" + (i - start).ToString() + " = \"" + conditionText(Text) + "\";" + Environment.NewLine; if (Method != "Enter script method") script += "\t\t\tbutton" + (i - start).ToString() + "cmd = \"" + conditionText(Method) + ";\";" + Environment.NewLine; } script += "\t};" + Environment.NewLine; m_log.WriteLine("Generated Conversation Node " + nameItem.Text); return script; }
protected void AddInputPins() { //We have different pins based on the properties of of the Target, so lets create them! TargetKey.ShapeE Shape = Target.Shape; var Properties = Target.GetType().GetProperties(); foreach (var prop in Properties) { if (prop.Name == "ClassName") { continue; } if (prop.Name == "ObjectInfo") { continue; } if (prop.Name == "KeyValue") { continue; //Skip the KV property } if (prop.Name == "Preset") { continue; //We aren't a preset, skip this property } if (prop.Name == "IsPreset") { continue; //Same as preset } if (prop.Name == "Shape") { continue; //The title of the node displays this } if (Shape == TargetKey.ShapeE.CIRCLE) //Skip the Line properties { if (prop.Name == "Length") { continue; } if (prop.Name == "Thickness") { continue; } } if (Shape == TargetKey.ShapeE.LINE) //Skip the circle properties { if (prop.Name == "Center") { continue; } if (prop.Name == "Radius") { continue; } } NodeItem item = null; if (prop.PropertyType == typeof(NumberValue)) { item = new NumberValueItem(prop.Name, 20, 20, 0, 100, 0, NodeItemType.Input); } if (item == null) { item = new NodeLabelItem(prop.Name, NodeItemType.Input); } item.Tag = prop.Name; this.AddItem(item); } }
private void AddNodeElements() { Type t = DotaAction.GetType(); InputExecute = new ExecuteNodeItem("Execute", NodeItemType.Input); this.AddItem(InputExecute); OutputExecute = new ExecuteNodeItem("Execute", NodeItemType.Output); this.AddItem(OutputExecute); //Loop through all of this action's properties and add node elements for each property type PropertyInfo[] properties = t.GetProperties(); //Target should always be ordered first var target = properties.FirstOrDefault(x => x.Name == "Target"); if (target != null) { TargetPin = new TargetNodeItem(target.Name, NodeItemType.Input); TargetPin.Tag = "Target"; this.AddItem(TargetPin); } foreach (PropertyInfo prop in properties) { //Skip DotaDataObject's properties as they don't go into the node if (prop.Name == "ClassName") { continue; } if (prop.Name == "KeyValue") { continue; } if (prop.Name == "ObjectInfo") { continue; } if (prop.Name == "Target") { continue; //Skip target because we handled it already } NodeItem item = null; if (prop.PropertyType == typeof(NumberValue)) { item = new NumberValueItem(prop.Name, 20, 20, 0, 100, 0, NodeItemType.Input); } if (prop.PropertyType == typeof(TargetKey)) { item = new TargetNodeItem(prop.Name, NodeItemType.Input); } if (prop.PropertyType == typeof(DotaActionCollection)) { item = new ExecuteNodeItem(prop.Name, NodeItemType.Output); var ex = item as ExecuteNodeItem; ex.ActionCollection = prop.GetMethod.Invoke(DotaAction, new object[] { }) as DotaActionCollection; //Assign this execute node as the end point //for an action collection execute chain } if (item == null) { item = new NodeLabelItem(prop.Name, NodeItemType.Input); } item.Tag = prop.Name; this.AddItem(item); } }
private void rebuildGraph(GraphControl graph) { Dictionary <String, CConnectionFields> inputs = new Dictionary <String, CConnectionFields>(); Dictionary <String, CConnectionFields> outputs = new Dictionary <String, CConnectionFields>(); foreach (CNodeFields node in m_graphFields.Nodes) { m_idNameMap.Add(node.id, node.name); Node n = new Node(node.Title); n.Location = node.Location; foreach (CNodeItemFields item in node.Items) { String name = ""; if (item.name != null) { name = item.name.Split(':')[1]; } if (item.Input != null) { foreach (CConnectionFields conn in item.Input) { if (!inputs.ContainsKey(conn.id)) { inputs.Add(conn.id, conn); } } } if (item.Output != null) { foreach (CConnectionFields conn in item.Output) { if (!outputs.ContainsKey(conn.id)) { outputs.Add(conn.id, conn); } } } switch (item.ItemType) { case "Graph.Items.NodeCompositeItem": { NodeCompositeItem temp = new NodeCompositeItem(item.IOMode); temp.Name = name; foreach (CItemPartFields part in item.ItemParts) { switch (part.PartType) { case "Graph.Items.ItemTextBoxPart": { ItemTextBoxPart p = new ItemTextBoxPart(part.Text); p.Name = part.name; temp.AddPart(p); } break; default: { } break; } } if (item.Tag != null) { temp.Tag = TagFactory.GetTagObject(item.Tag); } if (temp.Name.Contains("button_")) { temp.Clicked += m_parentForm.GetConvMouseHandler(); } m_itemMap.Add(item.id, temp); m_idNameMap.Add(item.id, name); n.AddItem(temp); } break; case "Graph.Items.NodeTextBoxItem": { NodeTextBoxItem temp = new NodeTextBoxItem(item.Text, item.IOMode); temp.Name = name; if (item.Tag != null) { temp.Tag = TagFactory.GetTagObject(item.Tag); } m_itemMap.Add(item.id, temp); m_idNameMap.Add(item.id, name); n.AddItem(temp); } break; case "Graph.Items.NodeLabelItem": { NodeLabelItem temp = new NodeLabelItem(item.Text, item.IOMode); temp.Name = name; if (item.Tag != null) { temp.Tag = TagFactory.GetTagObject(item.Tag); } m_itemMap.Add(item.id, temp); m_idNameMap.Add(item.id, name); if (temp.Name == "EditNodeItem") { temp.Clicked += m_parentForm.GetEditMouseHandler(); } n.AddItem(temp); } break; default: { //NodeItem temp = new NodeItem(item.IOMode); } break; } } graph.AddNode(n); } rebuildConnections(graph, inputs, outputs); }