List <AnimationFragment> GetFragments(List <AnimationDataFile> animationDataFiles, ByteChunk data, string onlyForThisSkeleton = null) { var fragmentFiles = animationDataFiles.Where(x => x.Name.Contains(".frg")); var output = new List <AnimationFragment>(fragmentFiles.Count()); foreach (var fragmentFile in fragmentFiles) { data.Index = fragmentFile.StartOffset; var fragment = new AnimationFragment(fragmentFile.Name, data); fragment.ParentAnimationPack = this; if (onlyForThisSkeleton != null) { if (onlyForThisSkeleton == fragment.Skeletons.Values.FirstOrDefault()) { output.Add(fragment); } } else { output.Add(fragment); } } return(output); }
void Load(FileTypes.AnimationPack.AnimationFragment fragmentFile) { SuspendLayout(); foreach (var fragment in fragmentFile.Fragments) { CreateRow(fragment.Slot.Value, fragment.AnimationFile, fragment.MetaDataFile, fragment.SoundMetaDataFile, fragment.Unknown0, fragment.Unknown1, fragment.Unknown3, fragment.Unknown4); } ResumeLayout(); }
public void AddFragmentCollection(AnimationFragment other) { int itemsAdded = 0; foreach (var otherFragment in other.Fragments) { var existingFragment = GetFragment(otherFragment.Slot); if (existingFragment == null) { var cpy = ObjectHelper.DeepClone(otherFragment); Fragments.Add(cpy); itemsAdded++; } } Fragments = Fragments .OrderBy(x => x.Slot.Id) .ToList(); UpdateMinAndMaxSlotIds(); }
public static AnimationFragmentViewModel CreateFromFragment(PackFileService pfs, FileTypes.AnimationPack.AnimationFragment fragment, bool isEditable = true) { var viewModel = new AnimationFragmentViewModel(pfs, isEditable); viewModel.Load(fragment); return(viewModel); }