1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-01-21 07:53:53 +00:00

Fix navmesh cache progress bar jumps

When initial approximation of maximum progress based on numer of cells is too
high comparing to real number of navmesh tiles.
This commit is contained in:
elsid 2021-12-16 21:48:47 +01:00
parent cc97c4450a
commit 8fedca5780
No known key found for this signature in database
GPG key ID: B845CB9FEE18AB40

View file

@ -457,11 +457,18 @@ void Launcher::DataFilesPage::updateNavMeshProgress()
QRegularExpressionMatch match = pattern.match(text); QRegularExpressionMatch match = pattern.match(text);
if (!match.hasMatch()) if (!match.hasMatch())
return; return;
int maximum = match.captured(2).toInt(); int value = match.captured(1).toInt();
const int maximum = match.captured(2).toInt();
if (text.contains("cell")) if (text.contains("cell"))
maximum *= 100; ui.navMeshProgressBar->setMaximum(maximum * 100);
ui.navMeshProgressBar->setMaximum(std::max(ui.navMeshProgressBar->maximum(), maximum)); else if (maximum > ui.navMeshProgressBar->maximum())
ui.navMeshProgressBar->setValue(match.captured(1).toInt()); ui.navMeshProgressBar->setMaximum(maximum);
else
value += static_cast<int>(std::round(
(ui.navMeshProgressBar->maximum() - maximum)
* (static_cast<float>(value) / static_cast<float>(maximum))
));
ui.navMeshProgressBar->setValue(value);
} }
void Launcher::DataFilesPage::navMeshToolFinished(int exitCode, QProcess::ExitStatus exitStatus) void Launcher::DataFilesPage::navMeshToolFinished(int exitCode, QProcess::ExitStatus exitStatus)