public DStart(DialogueEditorWPF editor, int orderKey, int StartNbr, float x, float y, ConvGraphEditor ConvGraphEditor) : base(ConvGraphEditor) { NodeUID = 2000 + StartNbr; Editor = editor; Order = orderKey; string ordinal = DialogueEditorWPF.AddOrdinal(orderKey + 1); StartNumber = StartNbr; outlinePen = new Pen(EventColor); listname = $"{ordinal} Start Node: {StartNbr}";; float starty = 0; float w = 15; float midW = 50; GetTitleBox(listname, 20); w += titleBox.Width; OutputLink l = new OutputLink { Links = new List <int>(StartNbr), InputIndices = new int(), Edges = new List <DiagEdEdge>(), Desc = $"Out {StartNbr}", RCat = EReplyCategory.REPLY_CATEGORY_DEFAULT }; int linkedOp = StartNbr; l.Links.Add(linkedOp); l.InputIndices = 0; l.node = CreateActionLinkBox(); l.node.Brush = outputBrush; l.node.Pickable = false; PPath dragger = CreateActionLinkBox(); dragger.Brush = mostlyTransparentBrush; dragger.X = l.node.X; dragger.Y = l.node.Y; dragger.AddInputEventListener(outputDragHandler); l.node.AddChild(dragger); Outlinks.Add(l); outLinkBox = new PPath(); DText t2 = new DText($"{StartNbr} :"); if (t2.Width + 10 > midW) { midW = t2.Width + 10; } t2.X = 0 - t2.Width; t2.Y = starty - 10; t2.Pickable = false; t2.AddChild(l.node); outLinkBox.AddChild(t2); outLinkBox.AddPolygon(new[] { new PointF(0, 0), new PointF(0, starty), new PointF(-0.5f * midW, starty + 30), new PointF(0 - midW, starty), new PointF(0 - midW, 0), new PointF(midW / -2, -30) }); outLinkBox.Pickable = false; outLinkBox.Pen = outlinePen; outLinkBox.Brush = nodeBrush; float h = titleBox.Height + 1; outLinkBox.TranslateBy(titleBox.Width / 2 + midW / 2, h + 30); h += outLinkBox.Height + 1; bounds = new RectangleF(0, 0, w, h); AddChild(titleBox); AddChild(outLinkBox); Pickable = true; SetOffset(x, y); MouseEnter += OnMouseEnter; MouseLeave += OnMouseLeave; }