mirror of
https://github.com/OpenMW/openmw.git
synced 2025-12-24 16:53:08 +00:00
Reserve capacity for controller NIF collections
This commit is contained in:
parent
02d9c26289
commit
3927eaef66
1 changed files with 14 additions and 20 deletions
|
|
@ -211,10 +211,9 @@ namespace Nif
|
|||
nif->read(mSpawnMultiplier);
|
||||
nif->read(mSpawnSpeedChaos);
|
||||
nif->read(mSpawnDirChaos);
|
||||
mParticles.resize(nif->get<uint16_t>());
|
||||
const uint16_t numParticles = nif->get<uint16_t>();
|
||||
nif->read(mNumValid);
|
||||
for (NiParticleInfo& particle : mParticles)
|
||||
particle.read(nif);
|
||||
nif->readVectorOfRecords(numParticles, mParticles);
|
||||
nif->skip(4); // NiEmitterModifier link
|
||||
}
|
||||
mModifier.read(nif);
|
||||
|
|
@ -347,9 +346,7 @@ namespace Nif
|
|||
{
|
||||
NiInterpController::read(nif);
|
||||
|
||||
mExtraTargets.resize(nif->get<uint16_t>());
|
||||
for (NiAVObjectPtr& extraTarget : mExtraTargets)
|
||||
extraTarget.read(nif);
|
||||
nif->readVectorOfRecords<uint16_t>(mExtraTargets);
|
||||
}
|
||||
|
||||
void NiMultiTargetTransformController::post(Reader& nif)
|
||||
|
|
@ -413,12 +410,13 @@ namespace Nif
|
|||
return;
|
||||
}
|
||||
|
||||
mInterpolators.resize(nif->get<uint32_t>());
|
||||
mWeights.resize(mInterpolators.size());
|
||||
for (size_t i = 0; i < mInterpolators.size(); i++)
|
||||
const uint32_t numInterpolators = nif->get<uint32_t>();
|
||||
mInterpolators.reserve(numInterpolators);
|
||||
mWeights.reserve(numInterpolators);
|
||||
for (size_t i = 0; i < numInterpolators; ++i)
|
||||
{
|
||||
mInterpolators[i].read(nif);
|
||||
nif->read(mWeights[i]);
|
||||
mInterpolators.emplace_back().read(nif);
|
||||
nif->read(mWeights.emplace_back());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -733,7 +731,7 @@ namespace Nif
|
|||
if (nif->getVersion() >= NIFStream::generateVersion(10, 1, 0, 112))
|
||||
{
|
||||
nif->read(mFlags);
|
||||
mItems.resize(nif->get<uint8_t>());
|
||||
const uint8_t numItems = nif->get<uint8_t>();
|
||||
nif->read(mWeightThreshold);
|
||||
if (!(mFlags & Flag_ManagerControlled))
|
||||
{
|
||||
|
|
@ -745,17 +743,14 @@ namespace Nif
|
|||
nif->read(mHighWeightsSum);
|
||||
nif->read(mNextHighWeightsSum);
|
||||
nif->read(mHighEaseSpinner);
|
||||
for (Item& item : mItems)
|
||||
item.read(nif);
|
||||
nif->readVectorOfRecords(numItems, mItems);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (nif->getVersion() >= NIFStream::generateVersion(10, 1, 0, 110))
|
||||
{
|
||||
mItems.resize(nif->get<uint8_t>());
|
||||
for (Item& item : mItems)
|
||||
item.read(nif);
|
||||
nif->readVectorOfRecords<uint8_t>(mItems);
|
||||
if (nif->get<bool>())
|
||||
mFlags |= Flag_ManagerControlled;
|
||||
nif->read(mWeightThreshold);
|
||||
|
|
@ -770,10 +765,9 @@ namespace Nif
|
|||
return;
|
||||
}
|
||||
|
||||
mItems.resize(nif->get<uint16_t>());
|
||||
const uint16_t numItems = nif->get<uint16_t>();
|
||||
nif->read(mArrayGrowBy);
|
||||
for (Item& item : mItems)
|
||||
item.read(nif);
|
||||
nif->readVectorOfRecords(numItems, mItems);
|
||||
if (nif->get<bool>())
|
||||
mFlags |= Flag_ManagerControlled;
|
||||
nif->read(mWeightThreshold);
|
||||
|
|
|
|||
Loading…
Reference in a new issue