private void ExtractMod(DirectoryInfo outDirectory, SimpleMod mod, SqPackStream dataStream) { PluginLog.Log(" -> Extracting {0} at {1}", mod.FullPath, mod.ModOffset.ToString("X")); try { var data = dataStream.ReadFile <FileResource>(mod.ModOffset); var extractedFile = new FileInfo(Path.Combine(outDirectory.FullName, mod.FullPath)); extractedFile.Directory?.Create(); File.WriteAllBytes(extractedFile.FullName, data.Data); } catch (Exception ex) { PluginLog.LogError(ex, "Could not export mod."); } }
private void ExtractMod(DirectoryInfo outDirectory, SimpleMod mod) { if (_streamDisposer is not PenumbraSqPackStream stream) { return; } PluginLog.Log(" -> Extracting {0} at {1}", mod.FullPath, mod.ModOffset.ToString("X")); _token.ThrowIfCancellationRequested(); var data = stream.ReadFile <PenumbraSqPackStream.PenumbraFileResource>(mod.ModOffset); _currentFileName = mod.FullPath; 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); }