private void ExtractMod(DirectoryInfo outDirectory, SimpleMod mod, PenumbraSqPackStream dataStream) { PluginLog.Log(" -> Extracting {0} at {1}", mod.FullPath, mod.ModOffset.ToString("X")); try { var data = dataStream.ReadFile <PenumbraSqPackStream.PenumbraFileResource>(mod.ModOffset); var extractedFile = new FileInfo(Path.Combine(outDirectory.FullName, mod.FullPath !)); extractedFile.Directory?.Create(); if (extractedFile.FullName.EndsWith("mdl")) { ProcessMdl(data.Data); } File.WriteAllBytes(extractedFile.FullName, data.Data); } catch (Exception ex) { PluginLog.LogError(ex, "Could not extract mod."); } }
private void ExtractSimpleModList(DirectoryInfo outDirectory, IEnumerable <SimpleMod> mods, PenumbraSqPackStream dataStream) { State = ImporterState.ExtractingModFiles; // haha allocation go brr var wtf = mods.ToList(); TotalProgress += wtf.LongCount(); // Extract each SimpleMod into the new mod folder foreach (var simpleMod in wtf.Where(M => M != null)) { ExtractMod(outDirectory, simpleMod, dataStream); CurrentProgress++; } }