Not found Land Textures are no longer a fatal error (Bug #3037)

Log warning message and show the default texture when encountering invalid ESM::LandTexture references.
openmw-38
scrawl 9 years ago
parent 4687c4baad
commit 35fa1f5865

@ -37,9 +37,7 @@ namespace CSVRender
return ltex;
}
std::stringstream error;
error << "Can't find LandTexture " << index << " from plugin " << plugin;
throw std::runtime_error(error.str());
return NULL;
}
void TerrainStorage::getBounds(float &minX, float &maxX, float &minY, float &maxY)

@ -69,7 +69,7 @@ namespace MWRender
{
const MWWorld::ESMStore &esmStore =
MWBase::Environment::get().getWorld()->getStore();
return esmStore.get<ESM::LandTexture>().find(index, plugin);
return esmStore.get<ESM::LandTexture>().search(index, plugin);
}
}

@ -299,11 +299,17 @@ namespace ESMTerrain
std::string Storage::getTextureName(UniqueTextureId id)
{
static const std::string defaultTexture = "textures\\_land_default.dds";
if (id.first == 0)
return "textures\\_land_default.dds"; // Not sure if the default texture really is hardcoded?
return defaultTexture; // Not sure if the default texture really is hardcoded?
// NB: All vtex ids are +1 compared to the ltex ids
const ESM::LandTexture* ltex = getLandTexture(id.first-1, id.second);
if (!ltex)
{
std::cerr << "Unable to find land texture index " << id.first-1 << " in plugin " << id.second << ", using default texture instead" << std::endl;
return defaultTexture;
}
// this is needed due to MWs messed up texture handling
std::string texture = Misc::ResourceHelpers::correctTexturePath(ltex->mTexture, mVFS);

Loading…
Cancel
Save