mirror of
https://github.com/OpenMW/openmw.git
synced 2025-03-04 05:39:40 +00:00
Merge branch 'loadingesm4' into 'master'
Track ESM4 file loading progress See merge request OpenMW/openmw!4516
This commit is contained in:
commit
e515e99937
4 changed files with 12 additions and 5 deletions
|
@ -70,7 +70,7 @@ namespace MWWorld
|
|||
mEncoder != nullptr ? &mEncoder->getStatelessEncoder() : nullptr);
|
||||
reader.setModIndex(index);
|
||||
reader.updateModIndices(mNameToIndex);
|
||||
mStore.loadESM4(reader);
|
||||
mStore.loadESM4(reader, listener);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -468,9 +468,16 @@ namespace MWWorld
|
|||
}
|
||||
}
|
||||
|
||||
void ESMStore::loadESM4(ESM4::Reader& reader)
|
||||
void ESMStore::loadESM4(ESM4::Reader& reader, Loading::Listener* listener)
|
||||
{
|
||||
auto visitorRec = [this](ESM4::Reader& reader) { return ESMStoreImp::readRecord(reader, *this); };
|
||||
if (listener != nullptr)
|
||||
listener->setProgressRange(::EsmLoader::fileProgress);
|
||||
auto visitorRec = [this, listener](ESM4::Reader& reader) {
|
||||
bool result = ESMStoreImp::readRecord(reader, *this);
|
||||
if (listener != nullptr)
|
||||
listener->setProgress(::EsmLoader::fileProgress * reader.getFileOffset() / reader.getFileSize());
|
||||
return result;
|
||||
};
|
||||
ESM4::ReaderUtils::readAll(reader, visitorRec, [](ESM4::Reader&) {});
|
||||
}
|
||||
|
||||
|
|
|
@ -219,7 +219,7 @@ namespace MWWorld
|
|||
void validateDynamic();
|
||||
|
||||
void load(ESM::ESMReader& esm, Loading::Listener* listener, ESM::Dialogue*& dialogue);
|
||||
void loadESM4(ESM4::Reader& esm);
|
||||
void loadESM4(ESM4::Reader& esm, Loading::Listener* listener);
|
||||
|
||||
template <class T>
|
||||
const Store<T>& get() const
|
||||
|
|
|
@ -217,7 +217,7 @@ namespace ESM4
|
|||
|
||||
// Methods added for updating loading progress bars
|
||||
inline std::size_t getFileSize() const { return mFileSize; }
|
||||
inline std::size_t getFileOffset() const { return mStream->tellg(); }
|
||||
inline std::size_t getFileOffset() const { return mSavedStream ? mSavedStream->tellg() : mStream->tellg(); }
|
||||
|
||||
// Methods added for saving/restoring context
|
||||
ReaderContext getContext(); // WARN: must be called immediately after reading the record header
|
||||
|
|
Loading…
Reference in a new issue