protected void Rebuild() { if (IsClosed) //solid { if (FPoints.Count > 2) { PPath.Reset(); PPath.AddPolygon(FPoints.ToArray()); } } else //line strip { if (FPoints.Count > 1) { PPath.Reset(); for (int i = 0; i < FPoints.Count - 1; i++) { PPath.AddLine(FPoints[i].X, FPoints[i].Y, FPoints[i + 1].X, FPoints[i + 1].Y); } } } }
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; }
public WEvent(WwiseBank.Event hircEvent, float x, float y, WwiseGraphEditor grapheditor) : base(hircEvent, grapheditor) { outlinePen = new Pen(EventColor); const string s = "Event"; float starty = 0; float w = 15; float midW = 0; varLinkBox = new PPath(); GetLinks(); foreach (var varLink in Varlinks) { string d = string.Join(",", varLink.Links.Select(l => $"#{l}")); SText t2 = new SText(d + "\n" + varLink.Desc) { X = w, Y = 0, Pickable = false }; w += t2.Width + 20; varLink.node.TranslateBy(t2.X + t2.Width / 2, t2.Y + t2.Height); t2.AddChild(varLink.node); varLinkBox.AddChild(t2); } if (Varlinks.Count != 0) { varLinkBox.AddRectangle(0, 0, w, varLinkBox[0].Height); } varLinkBox.Pickable = false; varLinkBox.Pen = outlinePen; varLinkBox.Brush = nodeBrush; outLinkBox = new PPath(); for (int i = 0; i < Outlinks.Count; i++) { string linkDesc = Outlinks[i].Desc; if (OutputNumbers && Outlinks[i].Links.Any()) { linkDesc += $": {string.Join(",", Outlinks[i].Links.Select(l => $"#{l}"))}"; } SText t2 = new SText(linkDesc); if (t2.Width + 10 > midW) { midW = t2.Width + 10; } //t2.TextAlignment = StringAlignment.Far; //t2.ConstrainWidthToTextWidth = false; t2.X = 0 - t2.Width; t2.Y = starty + 3; starty += t2.Height + 6; t2.Pickable = false; Outlinks[i].node.TranslateBy(0, t2.Y + t2.Height / 2); t2.AddChild(Outlinks[i].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 tW = GetTitleBox(s, w); if (tW > w) { if (midW > tW) { w = midW; titleBox.Width = w; } else { w = tW; } varLinkBox.Width = w; } float h = titleBox.Height + 1; outLinkBox.TranslateBy(titleBox.Width / 2 + midW / 2, h + 30); h += outLinkBox.Height + 1; varLinkBox.TranslateBy(0, h); h += varLinkBox.Height; bounds = new RectangleF(0, 0, w, h); AddChild(titleBox); AddChild(varLinkBox); AddChild(outLinkBox); SetOffset(x, y); }