public InterpData() : base() { InterpGroups = new List<InterpGroup>(); TimelineView = new PNode(); AddChild(TimelineView); TimelineView.MoveToBack(); TimelineView.Pickable = false; //TimelineView.Brush = new SolidBrush(Color.FromArgb(60, 60, 60)); TimelineView.SetBounds(0, 0, 3600, Height); TimelineView.TranslateBy(Timeline.ListWidth, 0); TimeScale = PPath.CreateRectangle(0, 0, 3600, Timeline.InfoHeight); TimeScale.TranslateBy(Timeline.ListWidth, 0); TimeScale.Pickable = false; TimeScale.Brush = new SolidBrush(Color.FromArgb(80, 80, 80)); AddChild(TimeScale); TimeScale.MoveToFront(); //seperationLine = PPath.CreateLine(Timeline.ListWidth, 0, Timeline.ListWidth, 10); //seperationLine.Pickable = false; //AddChild(seperationLine); }
public override void Layout(float x, float y) { if (originalX != -1) x = originalX; if (originalY != -1) y = originalY; outlinePen = new Pen(Color.Black); string s = pcc.Exports[index].ObjectName; s = s.Replace("BioSeqAct_", ""); s = s.Replace("SFXSeqAct_", ""); s = s.Replace("SeqAct_", ""); s = s.Replace("SeqCond_", ""); float starty = 8; float w = 20; varLinkBox = new PPath(); for (int i = 0; i < Varlinks.Count(); i++) { string d = ""; foreach (int l in Varlinks[i].Links) d = d + "#" + l + ","; d = d.Remove(d.Length - 1); SText t2 = new SText(d + "\n" + Varlinks[i].Desc); t2.X = w; t2.Y = 0; w += t2.Width + 20; t2.Pickable = false; Varlinks[i].node.TranslateBy(t2.X + t2.Width / 2, t2.Y + t2.Height); t2.AddChild(Varlinks[i].node); varLinkBox.AddChild(t2); } if (Varlinks.Count != 0) varLinkBox.Height = varLinkBox[0].Height; varLinkBox.Width = w; varLinkBox.Pickable = false; outLinkBox = new PPath(); float outW = 0; for (int i = 0; i < Outlinks.Count(); i++) { SText t2 = new SText(Outlinks[i].Desc); if (t2.Width + 10 > outW) outW = t2.Width + 10; t2.X = 0 - t2.Width; t2.Y = starty; starty += t2.Height; t2.Pickable = false; Outlinks[i].node.TranslateBy(0, t2.Y + t2.Height / 2); t2.AddChild(Outlinks[i].node); outLinkBox.AddChild(t2); } outLinkBox.Pickable = false; inputLinkBox = new PNode(); GetInputLinks(); float inW = 0; float inY = 8; for (int i = 0; i < InLinks.Count(); i++) { SText t2 = new SText(InLinks[i].Desc); if (t2.Width > inW) inW = t2.Width; t2.X = 3; t2.Y = inY; inY += t2.Height; t2.Pickable = false; InLinks[i].node.X = -10; InLinks[i].node.Y = t2.Y + t2.Height / 2 - 5; t2.AddChild(InLinks[i].node); inputLinkBox.AddChild(t2); } inputLinkBox.Pickable = false; if (inY > starty) starty = inY; if (inW + outW + 10 > w) w = inW + outW + 10; List<SaltPropertyReader.Property> props = SaltPropertyReader.getPropList(pcc, pcc.Exports[index].Data); foreach (SaltPropertyReader.Property prop in props) { if (prop.Name == "oSequenceReference") s += "\n\"" + pcc.Exports[prop.Value.IntValue - 1].ObjectName + "\""; else if (prop.Name == "EventName" || prop.Name == "StateName") s += "\n\"" + prop.Value.IntValue + "\""; else if (prop.Name == "OutputLabel" || prop.Name == "m_sMovieName") s += "\n\"" + prop.Value.StringValue + "\""; else if (prop.Name == "m_pEffect") if(prop.Value.IntValue > 0) s += "\n\"" + pcc.Exports[prop.Value.IntValue - 1].ObjectName + "\""; else s += "\n\"" + pcc.Imports[-prop.Value.IntValue - 1].Name + "\""; } float tW = GetTitleBox(s, w); if (tW > w) { w = tW; titleBox.Width = w; } titleBox.X = 0; titleBox.Y = 0; float h = titleBox.Height + 2; inputLinkBox.TranslateBy(0, h); outLinkBox.TranslateBy(w, h); h += starty + 8; varLinkBox.TranslateBy(varLinkBox.Width < w ? (w - varLinkBox.Width) / 2 : 0, h); h += varLinkBox.Height; box = PPath.CreateRectangle(0, titleBox.Height + 2, w, h - (titleBox.Height + 2)); box.Brush = nodeBrush; box.Pen = outlinePen; box.Pickable = false; this.Bounds = new RectangleF(0, 0, w, h); this.AddChild(box); this.AddChild(titleBox); this.AddChild(varLinkBox); this.AddChild(outLinkBox); this.AddChild(inputLinkBox); this.TranslateBy(x, y); }
public SEvent(int idx, float x, float y, PCCObject p, GraphEditor grapheditor) : base(idx, x, y, p, grapheditor) { outlinePen = new Pen(Color.FromArgb(214, 30, 28)); string s = pcc.Exports[index].ObjectName; s = s.Replace("BioSeqEvt_", ""); s = s.Replace("SFXSeqEvt_", ""); s = s.Replace("SeqEvt_", ""); s = s.Replace("SeqEvent_", ""); float starty = 0; float w = 15; float midW = 0; varLinkBox = new PPath(); GetVarLinks(); for (int i = 0; i < Varlinks.Count; i++) { string d = ""; foreach (int l in Varlinks[i].Links) d = d + "#" + l + ","; d = d.Remove(d.Length - 1); SText t2 = new SText( d + "\n" + Varlinks[i].Desc); t2.X = w; t2.Y = 0; w += t2.Width + 20; t2.Pickable = false; Varlinks[i].node.TranslateBy(t2.X + t2.Width / 2, t2.Y + t2.Height); t2.AddChild(Varlinks[i].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; GetOutputLinks(); outLinkBox = new PPath(); for (int i = 0; i < Outlinks.Count(); i++) { SText t2 = new SText(Outlinks[i].Desc); 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 PointF[] { 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; List<SaltPropertyReader.Property> props = SaltPropertyReader.getPropList(pcc, pcc.Exports[index].Data); foreach (SaltPropertyReader.Property prop in props) { if (prop.Name.Contains("EventName") || prop.Name == "sScriptName") s += "\n\"" + prop.Value.IntValue + "\""; else if (prop.Name == "InputLabel" || prop.Name == "sEvent") s += "\n\"" + prop.Value.StringValue + "\""; } 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; this.bounds = new RectangleF(0, 0, w, h); this.AddChild(titleBox); this.AddChild(varLinkBox); this.AddChild(outLinkBox); this.TranslateBy(x, y); }
public InterpGroup(int idx, ME3Package pccobj) : base() { index = idx; pcc = pccobj; title = new SText(""); if (pcc.Exports[index].ClassName == "InterpGroupDirector") GroupName = "DirGroup"; listEntry = PPath.CreateRectangle(0, 0, Timeline.ListWidth, Timeline.TrackHeight); listEntry.Brush = GroupBrush; listEntry.Pen = null; PPath p = PPath.CreatePolygon(7,5, 12,10, 7,15); p.Brush = Brushes.Black; listEntry.AddChild(p); listEntry.AddChild(PPath.CreateLine(0, listEntry.Bounds.Bottom, Timeline.ListWidth, listEntry.Bounds.Bottom)); colorAccent = new PNode(); colorAccent.Brush = null; colorAccent.Bounds = new RectangleF(Timeline.ListWidth - 10, 0, 10, listEntry.Bounds.Bottom); listEntry.AddChild(colorAccent); title.TranslateBy(20, 3); listEntry.AddChild(title); listEntry.MouseDown += listEntry_MouseDown; collapsed = true; InterpTracks = new List<InterpTrack>(); LoadData(); if (bIsParented) { listEntry.TranslateBy(10, 0); } }
public override void Layout(float x, float y) { if (pcc.Game == MEGame.ME1) { // == if (Math.Abs(x - -0.1f) < float.Epsilon) x = originalX; // == if (Math.Abs(y - -0.1f) < float.Epsilon) y = originalY; } else { // == if (Math.Abs(originalX - -1) > float.Epsilon) x = originalX; // == if (Math.Abs(originalY - -1) > float.Epsilon) y = originalY; } outlinePen = new Pen(Color.Black); string s = export.ObjectName; s = s.Replace("BioSeqAct_", ""); s = s.Replace("SFXSeqAct_", ""); s = s.Replace("SeqAct_", ""); s = s.Replace("SeqCond_", ""); float starty = 8; float w = 20; varLinkBox = new PPath(); for (int i = 0; i < Varlinks.Count(); i++) { string d = ""; foreach (int l in Varlinks[i].Links) d = d + "#" + l + ","; d = d.Remove(d.Length - 1); SText t2 = new SText(d + "\n" + Varlinks[i].Desc); t2.X = w; t2.Y = 0; w += t2.Width + 20; t2.Pickable = false; Varlinks[i].node.TranslateBy(t2.X + t2.Width / 2, t2.Y + t2.Height); t2.AddChild(Varlinks[i].node); varLinkBox.AddChild(t2); } if (Varlinks.Count != 0) varLinkBox.Height = varLinkBox[0].Height; varLinkBox.Width = w; varLinkBox.Pickable = false; outLinkBox = new PPath(); float outW = 0; for (int i = 0; i < Outlinks.Count(); i++) { SText t2 = new SText(Outlinks[i].Desc); if (t2.Width + 10 > outW) outW = t2.Width + 10; t2.X = 0 - t2.Width; t2.Y = starty; starty += t2.Height; t2.Pickable = false; Outlinks[i].node.TranslateBy(0, t2.Y + t2.Height / 2); t2.AddChild(Outlinks[i].node); outLinkBox.AddChild(t2); } outLinkBox.Pickable = false; inputLinkBox = new PNode(); GetInputLinks(); float inW = 0; float inY = 8; for (int i = 0; i < InLinks.Count(); i++) { SText t2 = new SText(InLinks[i].Desc); if (t2.Width > inW) inW = t2.Width; t2.X = 3; t2.Y = inY; inY += t2.Height; t2.Pickable = false; InLinks[i].node.X = -10; InLinks[i].node.Y = t2.Y + t2.Height / 2 - 5; t2.AddChild(InLinks[i].node); inputLinkBox.AddChild(t2); } inputLinkBox.Pickable = false; if (inY > starty) starty = inY; if (inW + outW + 10 > w) w = inW + outW + 10; var props = export.GetProperties(); foreach (var prop in props) { if (prop.Name == "oSequenceReference") { ObjectProperty objectProperty = (prop as ObjectProperty); if (pcc.Game == MEGame.ME1) { if (objectProperty.Value > 0) { string seqName = pcc.getEntry(objectProperty.Value).ObjectName; if (seqName == "Sequence") { var objNameProp = pcc.getExport(objectProperty.Value - 1).GetProperty<StrProperty>("ObjName"); if (objNameProp != null) { seqName = objNameProp; } } s += "\n\"" + seqName + "\""; } else { s += "\n\"" + pcc.getEntry(objectProperty.Value).ObjectName + "\""; } } else { s += "\n\"" + pcc.getEntry(objectProperty.Value).ObjectName + "\""; } } else if (prop.Name == "EventName" || prop.Name == "StateName") s += "\n\"" + (prop as NameProperty) + "\""; else if (prop.Name == "OutputLabel" || prop.Name == "m_sMovieName") s += "\n\"" + (prop as StrProperty) + "\""; else if (prop.Name == "m_pEffect") { s += "\n\"" + pcc.getEntry((prop as ObjectProperty).Value).ObjectName + "\""; } } float tW = GetTitleBox(s, w); if (tW > w) { w = tW; titleBox.Width = w; } titleBox.X = 0; titleBox.Y = 0; float h = titleBox.Height + 2; inputLinkBox.TranslateBy(0, h); outLinkBox.TranslateBy(w, h); h += starty + 8; varLinkBox.TranslateBy(varLinkBox.Width < w ? (w - varLinkBox.Width) / 2 : 0, h); h += varLinkBox.Height; box = PPath.CreateRectangle(0, titleBox.Height + 2, w, h - (titleBox.Height + 2)); box.Brush = nodeBrush; box.Pen = outlinePen; box.Pickable = false; this.Bounds = new RectangleF(0, 0, w, h); this.AddChild(box); this.AddChild(titleBox); this.AddChild(varLinkBox); this.AddChild(outLinkBox); this.AddChild(inputLinkBox); this.TranslateBy(x, y); }