Move distance initialization to Finalize.

This commit is contained in:
Malcolm Tyrrell
2021-10-20 12:47:44 +01:00
parent 5b13b97f27
commit 4d10f5d133
2 changed files with 11 additions and 9 deletions

View File

@@ -89,6 +89,9 @@ void SpatialSort::Fill(const aiVector3D *pPositions, unsigned int pNumPositions,
// ------------------------------------------------------------------------------------------------
void SpatialSort::Finalize() {
for (unsigned int i = 0; i < mPositions.size(); i++) {
mPositions[i].mDistance = mPositions[i].mPosition * mPlaneNormal;
}
std::sort(mPositions.begin(), mPositions.end());
mFinalized = true;
}
@@ -104,10 +107,7 @@ void SpatialSort::Append(const aiVector3D *pPositions, unsigned int pNumPosition
for (unsigned int a = 0; a < pNumPositions; a++) {
const char *tempPointer = reinterpret_cast<const char *>(pPositions);
const aiVector3D *vec = reinterpret_cast<const aiVector3D *>(tempPointer + a * pElementOffset);
// store position by index and distance
ai_real distance = *vec * mPlaneNormal;
mPositions.push_back(Entry(static_cast<unsigned int>(a + initial), *vec, distance));
mPositions.push_back(Entry(static_cast<unsigned int>(a + initial), *vec));
}
if (pFinalize) {