chore(model): refactor all linear searches in CM2Model::FindKey for clarity

This commit is contained in:
fallenoak 2025-11-02 12:29:44 -06:00
parent 81dd3d64b4
commit 72ec15f494
No known key found for this signature in database
GPG Key ID: 7628F8E61AEA070D

View File

@ -885,7 +885,7 @@ void CM2Model::FindKey(M2ModelBoneSeq* sequence, const M2TrackBase& track, uint3
if (v16 >= 500) { if (v16 >= 500) {
if (v16 < 0xFFFFFE0C) { if (v16 < 0xFFFFFE0C) {
if (sequenceTime >= 500) { if (sequenceTime >= 500) {
// Run binary search for key containing sequence time // Perform binary search for key containing sequence time
int32_t lowKey = 0; int32_t lowKey = 0;
int32_t highKey = numKeys; int32_t highKey = numKeys;
@ -912,41 +912,37 @@ void CM2Model::FindKey(M2ModelBoneSeq* sequence, const M2TrackBase& track, uint3
foundKey = lowKey; foundKey = lowKey;
} else { } else {
foundKey = 0; // Perform linear search forward from zero for key containing sequence time
uint32_t* v19 = keyTimes + 1;
do { uint32_t key = 0;
if (*v19 > sequenceTime) {
break; while (key < numKeys - 1 && sequenceTime >= keyTimes[key + 1]) {
key++;
} }
++foundKey; foundKey = key;
++v19;
} while (foundKey < numKeys - 1);
} }
} else if (foundKey) { } else if (currentKey > 0) {
uint32_t* v18 = &keyTimes[foundKey]; // Perform linear search backward from current key for key containing sequence time
do { uint32_t key = currentKey;
if (*v18 <= sequenceTime) {
break; while (key > 0 && sequenceTime < keyTimes[key]) {
key--;
} }
--foundKey; foundKey = key;
--v18;
} while (foundKey);
} }
} else if (foundKey < numKeys - 1) { } else if (currentKey < numKeys - 1) {
uint32_t* v17 = &keyTimes[foundKey + 1]; // Perform linear search forward from current key for key containing sequence time
do { uint32_t key = currentKey;
if (*v17 > sequenceTime) {
break; while (key < numKeys - 1 && sequenceTime >= keyTimes[key + 1]) {
key++;
} }
++foundKey; foundKey = key;
++v17;
} while (foundKey < numKeys - 1);
} }
if (foundKey + 1 >= numKeys) { if (foundKey + 1 >= numKeys) {