1
Fork 0
mirror of https://github.com/redstrate/Novus.git synced 2025-05-18 22:37:45 +00:00

Add more error handling when loading maps, update libphysis

This commit is contained in:
Joshua Goins 2025-05-17 13:10:46 -04:00
parent 7077f1727b
commit 2be604d6fa
2 changed files with 17 additions and 8 deletions

View file

@ -49,8 +49,11 @@ void MapView::addTerrain(QString basePath, physis_Terrain terrain)
for (uint32_t j = 0; j < plateMdl.num_material_names; j++) {
const char *material_name = plateMdl.material_names[j];
auto mat = physis_material_parse(m_cache.lookupFile(QLatin1String(material_name)));
materials.push_back(mat);
const auto matFile = m_cache.lookupFile(QLatin1String(material_name));
if (matFile.size > 0) {
auto mat = physis_material_parse(matFile);
materials.push_back(mat);
}
}
mdlPart->addModel(plateMdl,
@ -78,9 +81,12 @@ void MapView::reloadMap()
std::string bgPathStd = bgPath.toStdString() + "terrain.tera";
auto tera_buffer = physis_gamedata_extract_file(m_data, bgPathStd.c_str());
auto tera = physis_parse_tera(tera_buffer);
addTerrain(bgPath, tera);
if (tera_buffer.size > 0) {
auto tera = physis_parse_tera(tera_buffer);
addTerrain(bgPath, tera);
} else {
qWarning() << "Failed to load" << bgPathStd;
}
// add bg models
for (const auto &[name, lgb] : m_appState->lgbFiles) {
@ -111,8 +117,11 @@ void MapView::reloadMap()
for (uint32_t j = 0; j < plateMdl.num_material_names; j++) {
const char *material_name = plateMdl.material_names[j];
auto mat = physis_material_parse(m_cache.lookupFile(QLatin1String(material_name)));
materials.push_back(mat);
const auto matFile = m_cache.lookupFile(QLatin1String(material_name));
if (matFile.size > 0) {
auto mat = physis_material_parse(matFile);
materials.push_back(mat);
}
}
mdlPart->addModel(

2
extern/libphysis vendored

@ -1 +1 @@
Subproject commit 92a9a217616b8a229871b41cc7ca3e65704dc059
Subproject commit a003502171ceed7a15d4dad705c68e4447a485e3