コード例 #1
0
ファイル: MyNodeView.cs プロジェクト: xeronith/BrainSimulator
        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);
                }
            }
        }
コード例 #2
0
ファイル: CGraphManager.cs プロジェクト: John3/T3DConvoEdit
 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);
 }
コード例 #3
0
ファイル: TSWriterPlugin.cs プロジェクト: John3/T3DConvoEdit
 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;
 }
コード例 #4
0
ファイル: EventNode.cs プロジェクト: xfw5/WorldSmith
 private void AddSpecialPins()
 {
     if (Event.ProvidesAttackDamage)
     {
         var AttackDamagePin = new NodeLabelItem("Attack Damage", NodeItemType.Output);
         AddItem(AttackDamagePin);
     }
 }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        private void AddOutputLabel()
        {
            int i           = OutputLabels.Count;
            var outputLabel = new NodeLabelItem($"Output {i + 1}", false, true)
            {
                Tag = i
            };

            AddItem(outputLabel);
            OutputLabels.Add(outputLabel);
        }
コード例 #8
0
        private void AddInputLabel()
        {
            int i          = InputLabels.Count;
            var inputLabel = new NodeLabelItem($"Input {i + 1}", true, false)
            {
                Tag = i
            };

            AddItem(inputLabel);
            InputLabels.Add(inputLabel);
        }
コード例 #9
0
ファイル: Form1.cs プロジェクト: John3/T3DConvoEdit
        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);
        }
コード例 #10
0
ファイル: PostFxPOutputNode.cs プロジェクト: lukaspj/CGF
        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);
        }
コード例 #11
0
ファイル: Form1.cs プロジェクト: John3/T3DConvoEdit
        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);
        }
コード例 #12
0
        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);
        }
コード例 #13
0
        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);
        }
コード例 #14
0
ファイル: Form1.cs プロジェクト: John3/T3DConvoEdit
        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);
        }
コード例 #15
0
ファイル: Form1.cs プロジェクト: John3/T3DConvoEdit
        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);
        }
コード例 #16
0
ファイル: TSWriterPlugin.cs プロジェクト: John3/T3DConvoEdit
 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;
 }
コード例 #17
0
ファイル: MyNodeView.cs プロジェクト: xeronith/BrainSimulator
        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);
        }
コード例 #18
0
        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);
        }
コード例 #19
0
        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);
        }
コード例 #20
0
        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);
        }
コード例 #21
0
ファイル: CGraphFields.cs プロジェクト: John3/T3DConvoEdit
        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);
        }
コード例 #22
0
        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);
                }
            }
        }
コード例 #23
0
ファイル: CGraphFields.cs プロジェクト: John3/T3DConvoEdit
        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);
            }
        }
コード例 #24
0
ファイル: TSWriterPlugin.cs プロジェクト: John3/T3DConvoEdit
            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;
            }
コード例 #25
0
ファイル: CustomTargetNode.cs プロジェクト: xfw5/WorldSmith
        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);
            }
        }
コード例 #26
0
        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);
            }
        }
コード例 #27
0
ファイル: CGraphManager.cs プロジェクト: John3/T3DConvoEdit
        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);
        }