diff --git a/src/r_data/models.cpp b/src/r_data/models.cpp index 0564099b6..d970d5239 100644 --- a/src/r_data/models.cpp +++ b/src/r_data/models.cpp @@ -413,25 +413,18 @@ static void ParseModelDefLump(int Lump) { smf.modelsAmount = MIN_MODELS; } - //Allocate TArrays - smf.modelIDs.Alloc(smf.modelsAmount); - smf.skinIDs.Alloc(smf.modelsAmount); - smf.surfaceskinIDs.Alloc(smf.modelsAmount * MD3_MAX_SURFACES); - smf.modelframes.Alloc(smf.modelsAmount); - //Make sure all modelIDs are -1 by default - for (auto& modelID : smf.modelIDs) + + const auto initArray = [](auto& array, const unsigned count, const auto value) { - modelID = -1; - } - //Make sure no TArray elements of type FTextureID are null. These elements will have a textureid (FTextureID.texnum) of 0. - for (auto& skinID : smf.skinIDs) - { - skinID = FTextureID(FNullTextureID()); - } - for (auto& surfaceskinID : smf.surfaceskinIDs) - { - surfaceskinID = FTextureID(FNullTextureID()); - } + array.Alloc(count); + std::fill(array.begin(), array.end(), value); + }; + + initArray(smf.modelIDs, smf.modelsAmount, -1); + initArray(smf.skinIDs, smf.modelsAmount, FNullTextureID()); + initArray(smf.surfaceskinIDs, smf.modelsAmount * MD3_MAX_SURFACES, FNullTextureID()); + initArray(smf.modelframes, smf.modelsAmount, 0); + sc.RestorePos(scPos); sc.MustGetStringName("{"); while (!sc.CheckString("}"))