1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-03-20 10:20:50 +00:00

Deduplicate some version checks, avoid resizing twice

This commit is contained in:
Alexei Kotov 2023-09-06 20:54:04 +03:00
parent b7c69d109f
commit 145ce8f924

View File

@ -416,13 +416,14 @@ namespace Nif
nif->read(numStrips); nif->read(numStrips);
nif->read(bonesPerVertex); nif->read(bonesPerVertex);
nif->readVector(mBones, numBones); nif->readVector(mBones, numBones);
if (nif->getVersion() < NIFStream::generateVersion(10, 1, 0, 0) || nif->get<bool>()) bool hasPresenceFlags = nif->getVersion() >= NIFStream::generateVersion(10, 1, 0, 0);
if (!hasPresenceFlags || nif->get<bool>())
nif->readVector(mVertexMap, numVertices); nif->readVector(mVertexMap, numVertices);
if (nif->getVersion() < NIFStream::generateVersion(10, 1, 0, 0) || nif->get<bool>()) if (!hasPresenceFlags || nif->get<bool>())
nif->readVector(mWeights, numVertices * bonesPerVertex); nif->readVector(mWeights, numVertices * bonesPerVertex);
std::vector<unsigned short> stripLengths; std::vector<unsigned short> stripLengths;
nif->readVector(stripLengths, numStrips); nif->readVector(stripLengths, numStrips);
if (nif->getVersion() < NIFStream::generateVersion(10, 1, 0, 0) || nif->get<bool>()) if (!hasPresenceFlags || nif->get<bool>())
{ {
if (numStrips) if (numStrips)
{ {
@ -509,12 +510,8 @@ namespace Nif
uint32_t numEntries; uint32_t numEntries;
nif->read(numEntries); nif->read(numEntries);
// Fill the entire palette with black even if there isn't enough entries. // Fill the entire palette with black even if there isn't enough entries.
mColors.resize(256); mColors.resize(numEntries > 256 ? numEntries : 256);
if (numEntries > 256)
mColors.resize(numEntries);
for (uint32_t i = 0; i < numEntries; i++) for (uint32_t i = 0; i < numEntries; i++)
{ {
nif->read(mColors[i]); nif->read(mColors[i]);