상속: ME3DataAnimSetStruct
 private void linesListBox_Drop(object sender, DragEventArgs e)
 {
     this.RestoreAndBringToFront();
     if (e.Data.GetDataPresent("FaceFXLine"))
     {
         dynamic       d           = e.Data.GetData("FaceFXLine");
         string[]      sourceNames = d.sourceNames;
         List <string> names       = FaceFX.Header.Names.ToList();
         ME3FaceFXLine line        = d.line;
         line.Name = names.FindOrAdd(sourceNames[line.Name]);
         if (Pcc.Game == MEGame.ME3)
         {
             (FaceFX as ME3FaceFXAnimSet).FixNodeTable();
             line.animations = line.animations.Select(x => new ME3NameRef
             {
                 index = names.FindOrAdd(sourceNames[x.index]),
                 unk2  = x.unk2
             }).ToArray();
             FaceFX.Data.Data         = FaceFX.Data.Data.Append(line).ToArray();
             FaceFX.Header.Names      = names.ToArray();
             linesListBox.ItemsSource = FaceFX.Data.Data;
         }
         else
         {
             if (!(line is ME2FaceFXLine))
             {
                 var result = MessageBox.Show("Cannot add ME3 FaceFX lines to ME2 FaceFXAnimsets. " +
                                              "If you require this feature, please make an issue on the project's Github page. Would you like to go the Github page now?",
                                              "Feature Not Implemented", MessageBoxButton.YesNo, MessageBoxImage.Question);
                 if (result == MessageBoxResult.Yes)
                 {
                     System.Diagnostics.Process.Start(App.BugReportURL);
                 }
                 return;
             }
             line.animations = line.animations.Select(x => new ME2NameRef
             {
                 index = names.FindOrAdd(sourceNames[x.index]),
                 unk2  = x.unk2
             }).ToArray();
             ME2DataAnimSetStruct me2DataAnimSetStruct = (FaceFX.Data as ME2DataAnimSetStruct);
             me2DataAnimSetStruct.Data = me2DataAnimSetStruct.Data.Append(line as ME2FaceFXLine).ToArray();
             FaceFX.Header.Names       = names.ToArray();
             linesListBox.ItemsSource  = me2DataAnimSetStruct.Data;
         }
     }
     SaveChanges();
 }
예제 #2
0
 private void linesListBox_Drop(object sender, DragEventArgs e)
 {
     this.RestoreAndBringToFront();
     if (e.Data.GetDataPresent("FaceFXLine"))
     {
         dynamic       d           = e.Data.GetData("FaceFXLine");
         string[]      sourceNames = d.sourceNames;
         List <string> names       = FaceFX.Header.Names.ToList();
         ME3FaceFXLine line        = d.line;
         line.Name = names.FindOrAdd(sourceNames[line.Name]);
         if (pcc.Game == MEGame.ME3)
         {
             line.animations = line.animations.Select(x => new ME3NameRef
             {
                 index = names.FindOrAdd(sourceNames[x.index]),
                 unk2  = x.unk2
             }).ToArray();
             FaceFX.Data.Data         = FaceFX.Data.Data.Concat(line).ToArray();
             FaceFX.Header.Names      = names.ToArray();
             linesListBox.ItemsSource = FaceFX.Data.Data;
         }
         else
         {
             if (!(line is ME2FaceFXLine))
             {
                 MessageBox.Show("Cannot add ME3 FaceFX lines to ME2 FaceFXAnimsets. If you require this feature, please make an issue on the project's Github page");
                 return;
             }
             line.animations = line.animations.Select(x => new ME2NameRef
             {
                 index = names.FindOrAdd(sourceNames[x.index]),
                 unk2  = x.unk2
             }).ToArray();
             ME2DataAnimSetStruct me2DataAnimSetStruct = (FaceFX.Data as ME2DataAnimSetStruct);
             me2DataAnimSetStruct.Data = me2DataAnimSetStruct.Data.Concat(line as ME2FaceFXLine).ToArray();
             FaceFX.Header.Names       = names.ToArray();
             linesListBox.ItemsSource  = me2DataAnimSetStruct.Data;
         }
     }
     SaveChanges();
 }
예제 #3
0
        private void DeleteLine_Click(object sender, RoutedEventArgs e)
        {
            ME3FaceFXLine line = (ME3FaceFXLine)linesListBox.SelectedItem;

            if (pcc.Game == MEGame.ME3)
            {
                List <ME3FaceFXLine> lines = FaceFX.Data.Data.ToList();
                lines.Remove(line);
                FaceFX.Data.Data         = lines.ToArray();
                linesListBox.ItemsSource = FaceFX.Data.Data;
            }
            else
            {
                ME2DataAnimSetStruct me2DataAnimSetStruct = (FaceFX.Data as ME2DataAnimSetStruct);
                List <ME2FaceFXLine> lines = me2DataAnimSetStruct.Data.ToList();
                lines.Remove(line as ME2FaceFXLine);
                me2DataAnimSetStruct.Data = lines.ToArray();
                linesListBox.ItemsSource  = me2DataAnimSetStruct.Data;
            }
            SaveChanges();
        }
        void SerializeData(SerializingContainer Container)
        {
            if (Container.isLoading)
            {
                data = new ME2DataAnimSetStruct();
            }
            data.unk1 = Container + data.unk1;
            data.unk2 = Container + data.unk2;
            data.unk3 = Container + data.unk3;
            data.unk4 = Container + data.unk4;
            data.unk5 = Container + data.unk5;
            data.unk6 = Container + data.unk6;
            data.unk7 = Container + data.unk7;
            data.unk8 = Container + data.unk8;
            data.unk9 = Container + data.unk9;
            int count = 0;

            if (!Container.isLoading)
            {
                count = data.Data.Length;
            }
            count = Container + count;
            if (Container.isLoading)
            {
                data.Data = new ME2FaceFXLine[count];
            }
            for (int i = 0; i < count; i++)
            {
                if (Container.isLoading)
                {
                    data.Data[i] = new ME2FaceFXLine();
                }
                ME2FaceFXLine d = (ME2FaceFXLine)data.Data[i];
                d.unk0 = Container + d.unk0;
                d.unk1 = Container + d.unk1;
                d.Name = Container + d.Name;
                if (Container.isLoading)
                {
                    d.NameAsString = header.Names[d.Name];
                }
                d.unk6 = Container + d.unk6;
                int animationCount = 0;
                if (!Container.isLoading)
                {
                    animationCount = d.animations.Length;
                }
                animationCount = Container + animationCount;
                if (Container.isLoading)
                {
                    d.animations = new ME2NameRef[animationCount];
                }
                for (int j = 0; j < animationCount; j++)
                {
                    if (Container.isLoading)
                    {
                        d.animations[j] = new ME2NameRef();
                    }
                    ME2NameRef u = d.animations[j] as ME2NameRef;
                    u.unk0          = Container + u.unk0;
                    u.unk1          = Container + u.unk1;
                    u.index         = Container + u.index;
                    u.unk2          = Container + u.unk2;
                    u.unk3          = Container + u.unk3;
                    d.animations[j] = u;
                }
                int pointCount = 0;
                if (!Container.isLoading)
                {
                    pointCount = d.points.Length;
                }
                pointCount = Container + pointCount;
                if (Container.isLoading)
                {
                    d.points = new ControlPoint[pointCount];
                }
                for (int j = 0; j < pointCount; j++)
                {
                    if (Container.isLoading)
                    {
                        d.points[j] = new ControlPoint();
                    }
                    ControlPoint u = d.points[j];
                    u.time         = Container + u.time;
                    u.weight       = Container + u.weight;
                    u.inTangent    = Container + u.inTangent;
                    u.leaveTangent = Container + u.leaveTangent;
                    d.points[j]    = u;
                }

                if (pointCount > 0)
                {
                    d.unk4 = Container + d.unk4;
                    int numKeysCount = 0;
                    if (!Container.isLoading)
                    {
                        numKeysCount = d.numKeys.Length;
                    }
                    numKeysCount = Container + numKeysCount;
                    if (Container.isLoading)
                    {
                        d.numKeys = new int[numKeysCount];
                    }
                    for (int j = 0; j < numKeysCount; j++)
                    {
                        d.numKeys[j] = Container + d.numKeys[j];
                    }
                }
                else if (Container.isLoading)
                {
                    d.numKeys = new int[d.animations.Length];
                }
                d.FadeInTime  = Container + d.FadeInTime;
                d.FadeOutTime = Container + d.FadeOutTime;
                d.unk2        = Container + d.unk2;
                d.unk5        = Container + d.unk5;
                d.path        = SerializeString(Container, d.path);
                d.ID          = SerializeString(Container, d.ID);
                d.index       = Container + d.index;
                data.Data[i]  = d;
            }
        }
예제 #5
0
 void SerializeData(SerializingContainer Container)
 {
     if (Container.isLoading)
         data = new ME2DataAnimSetStruct();
     data.unk1 = Container + data.unk1;
     data.unk2 = Container + data.unk2;
     data.unk3 = Container + data.unk3;
     data.unk4 = Container + data.unk4;
     data.unk5 = Container + data.unk5;
     data.unk6 = Container + data.unk6;
     data.unk7 = Container + data.unk7;
     data.unk8 = Container + data.unk8;
     data.unk9 = Container + data.unk9;
     int count = 0;
     if (!Container.isLoading)
         count = data.Data.Length;
     count = Container + count;
     if (Container.isLoading)
         data.Data = new ME2FaceFXLine[count];
     for (int i = 0; i < count; i++)
     {
         if (Container.isLoading)
             data.Data[i] = new ME2FaceFXLine();
         ME2FaceFXLine d = data.Data[i];
         d.unk0 = Container + d.unk0;
         d.unk1 = Container + d.unk1;
         d.Name = Container + d.Name;
         if (Container.isLoading)
         {
             d.NameAsString = header.Names[d.Name];
         }
         d.unk6 = Container + d.unk6;
         int count2 = 0;
         if (!Container.isLoading)
             count2 = d.animations.Length;
         count2 = Container + count2;
         if (Container.isLoading)
             d.animations = new ME2NameRef[count2];
         for (int j = 0; j < count2; j++)
         {
             if (Container.isLoading)
                 d.animations[j] = new ME2NameRef();
             ME2NameRef u = d.animations[j] as ME2NameRef;
             u.unk0 = Container + u.unk0;
             u.unk1 = Container + u.unk1;
             u.index = Container + u.index;
             u.unk2 = Container + u.unk2;
             u.unk3 = Container + u.unk3;
             d.animations[j] = u;
         }
         count2 = 0;
         if (!Container.isLoading)
             count2 = d.points.Length;
         count2 = Container + count2;
         if (Container.isLoading)
             d.points = new ControlPoint[count2];
         for (int j = 0; j < count2; j++)
         {
             if (Container.isLoading)
                 d.points[j] = new ControlPoint();
             ControlPoint u = d.points[j];
             u.time = Container + u.time;
             u.weight = Container + u.weight;
             u.inTangent = Container + u.inTangent;
             u.leaveTangent = Container + u.leaveTangent;
             d.points[j] = u;
         }
         d.unk4 = Container + d.unk4;
         count2 = 0;
         if (!Container.isLoading)
             count2 = d.numKeys.Length;
         count2 = Container + count2;
         if (Container.isLoading)
             d.numKeys = new int[count2];
         for (int j = 0; j < count2; j++)
             d.numKeys[j] = Container + d.numKeys[j];
         d.FadeInTime = Container + d.FadeInTime;
         d.FadeOutTime = Container + d.FadeOutTime;
         d.unk2 = Container + d.unk2;
         d.unk5 = Container + d.unk5;
         d.path = SerializeString(Container, d.path);
         d.ID = SerializeString(Container, d.ID);
         d.index = Container + d.index;
         data.Data[i] = d;
     }
 }