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(); }
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(); }
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; } }
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; } }