File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -68,7 +68,21 @@ std::shared_ptr<SatisfactorySave::AssetExport> SatisfactorySave::AssetFile::getE
6868
6969 seekCookedSerialOffset (exportEntry.CookedSerialOffset );
7070 auto read_limit_stack_pusher = pushReadLimit (exportEntry.CookedSerialSize );
71- *this << *exp->Object ;
71+ try {
72+ *this << *exp->Object ;
73+ } catch (const std::exception& ex1) {
74+ // Try a second time as UObject only.
75+ spdlog::error (" Error parsing '{}': {} (try again as UObject only!)" , class_name, ex1.what ());
76+ try {
77+ exp->Object = std::make_shared<UObject>();
78+ seekCookedSerialOffset (exportEntry.CookedSerialOffset );
79+ *this << *exp->Object ;
80+ } catch (const std::exception& ex2) {
81+ spdlog::error (" Error parsing '{}' as UObject: {}" , class_name, ex2.what ());
82+ exp->Object = nullptr ;
83+ seekCookedSerialOffset (exportEntry.CookedSerialOffset );
84+ }
85+ }
7286
7387 // Read unknown class data as binary buffer
7488 const auto data_read_size = tellCookedSerialOffset () - exportEntry.CookedSerialOffset ;
Original file line number Diff line number Diff line change @@ -168,12 +168,16 @@ void Satisfactory3DMap::AssetWindow::showExport(int idx) {
168168 if (asset_ == nullptr ) {
169169 return ;
170170 }
171- const auto exportEntry = asset_->exportMap ().at (idx);
172- auto assetExport = asset_->getExportObjectByIdx (idx);
171+ try {
172+ const auto exportEntry = asset_->exportMap ().at (idx);
173+ auto assetExport = asset_->getExportObjectByIdx (idx);
173174
174- exportWindows_.emplace_back (std::make_shared<AssetObjectWindow>(shared_from_this (), std::move (assetExport),
175- asset_->getNameString (exportEntry.ObjectName ) + " [" + SatisfactorySave::splitPathName (assetFilename_).back () +
176- " ]" ));
175+ exportWindows_.emplace_back (std::make_shared<AssetObjectWindow>(shared_from_this (), std::move (assetExport),
176+ asset_->getNameString (exportEntry.ObjectName ) + " [" +
177+ SatisfactorySave::splitPathName (assetFilename_).back () + " ]" ));
178+ } catch (const std::exception& ex) {
179+ spdlog::error (" Error getting asset export: {}" , ex.what ());
180+ }
177181}
178182
179183void Satisfactory3DMap::AssetWindow::exportExport (int idx) {
You can’t perform that action at this time.
0 commit comments