示例#1
0
 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);
 }
示例#2
0
 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);
 }
示例#3
0
 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);
 }
示例#4
0
        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);
        }