Reserve capacity for extra data NIF collections

This commit is contained in:
Alexei Kotov 2025-12-14 20:36:47 +03:00
parent ea506019dc
commit 7332b4e232
1 changed files with 8 additions and 21 deletions

View File

@ -64,11 +64,10 @@ namespace Nif
{
Extra::read(nif);
const uint32_t num = nif->get<uint32_t>();
if (nif->getBethVersion() <= NIFFile::BethVersion::BETHVER_FO3)
nif->readVectorOfRecords(num, mLegacyMarkers);
nif->readVectorOfRecords<uint32_t>(mLegacyMarkers);
else
nif->readVectorOfRecords(num, mMarkers);
nif->readVectorOfRecords<uint32_t>(mMarkers);
}
void BSInvMarker::read(NIFStream* nif)
@ -94,9 +93,7 @@ namespace Nif
{
Extra::read(nif);
mData.resize(nif->get<uint32_t>());
for (BoneLOD& lod : mData)
lod.read(nif);
nif->readVectorOfRecords<uint32_t>(mData);
}
void BSBoneLODExtraData::BoneLOD::read(NIFStream* nif)
@ -109,9 +106,7 @@ namespace Nif
{
NiFloatExtraData::read(nif);
mBlocks.resize(nif->get<uint16_t>());
for (Block& block : mBlocks)
block.read(nif);
nif->readVectorOfRecords<uint16_t>(mBlocks);
}
void BSDecalPlacementVectorExtraData::Block::read(NIFStream* nif)
@ -143,9 +138,7 @@ namespace Nif
{
NiExtraData::read(nif);
mPoints.resize(nif->get<uint32_t>());
for (Point& point : mPoints)
point.read(nif);
nif->readVectorOfRecords<uint32_t>(mPoints);
}
void BSConnectPoint::Children::read(NIFStream* nif)
@ -179,9 +172,7 @@ namespace Nif
nif->read(mLOD1TriOffset);
nif->read(mLOD2TriCount);
nif->read(mLOD2TriOffset);
mCombined.resize(nif->get<uint32_t>());
for (BSPackedGeomDataCombined& data : mCombined)
data.read(nif);
nif->readVectorOfRecords<uint32_t>(mCombined);
mVertexDesc.read(nif);
}
@ -194,12 +185,8 @@ namespace Nif
nif->read(mNumTriangles);
nif->read(mFlags1);
nif->read(mFlags2);
mObjects.resize(nif->get<uint32_t>());
for (BSPackedGeomObject& object : mObjects)
object.read(nif);
mObjectData.resize(mObjects.size());
for (BSPackedSharedGeomData& objectData : mObjectData)
objectData.read(nif);
nif->readVectorOfRecords<uint32_t>(mObjects);
nif->readVectorOfRecords(mObjects.size(), mObjectData);
}
}