mirror of
https://github.com/whoahq/whoa.git
synced 2026-02-02 00:32:45 +03:00
chore(model): refactor all linear searches in CM2Model::FindKey for clarity
This commit is contained in:
parent
81dd3d64b4
commit
72ec15f494
@ -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;
|
|
||||||
}
|
|
||||||
|
|
||||||
++foundKey;
|
while (key < numKeys - 1 && sequenceTime >= keyTimes[key + 1]) {
|
||||||
++v19;
|
key++;
|
||||||
} while (foundKey < numKeys - 1);
|
|
||||||
}
|
|
||||||
} else if (foundKey) {
|
|
||||||
uint32_t* v18 = &keyTimes[foundKey];
|
|
||||||
|
|
||||||
do {
|
|
||||||
if (*v18 <= sequenceTime) {
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
--foundKey;
|
foundKey = key;
|
||||||
--v18;
|
}
|
||||||
} while (foundKey);
|
} else if (currentKey > 0) {
|
||||||
}
|
// Perform linear search backward from current key for key containing sequence time
|
||||||
} else if (foundKey < numKeys - 1) {
|
|
||||||
uint32_t* v17 = &keyTimes[foundKey + 1];
|
|
||||||
|
|
||||||
do {
|
uint32_t key = currentKey;
|
||||||
if (*v17 > sequenceTime) {
|
|
||||||
break;
|
while (key > 0 && sequenceTime < keyTimes[key]) {
|
||||||
|
key--;
|
||||||
}
|
}
|
||||||
|
|
||||||
++foundKey;
|
foundKey = key;
|
||||||
++v17;
|
}
|
||||||
} while (foundKey < numKeys - 1);
|
} else if (currentKey < numKeys - 1) {
|
||||||
|
// Perform linear search forward from current key for key containing sequence time
|
||||||
|
|
||||||
|
uint32_t key = currentKey;
|
||||||
|
|
||||||
|
while (key < numKeys - 1 && sequenceTime >= keyTimes[key + 1]) {
|
||||||
|
key++;
|
||||||
|
}
|
||||||
|
|
||||||
|
foundKey = key;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (foundKey + 1 >= numKeys) {
|
if (foundKey + 1 >= numKeys) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user