mirror of
https://github.com/whoahq/whoa.git
synced 2026-02-01 16:22:45 +03:00
chore(model): improve clarity in CM2Model::FindKey
This commit is contained in:
parent
86695ee7a8
commit
42c6e68977
@ -849,21 +849,23 @@ void CM2Model::FindKey(M2ModelBoneSeq* sequence, const M2TrackBase& track, uint3
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t v6 = sequence->uint0;
|
uint32_t sequenceDuration = sequence->uint0;
|
||||||
uint32_t v7 = sequence->uint4;
|
uint32_t sequenceIndex = sequence->uint4;
|
||||||
|
|
||||||
if (track.loopIndex == 0xFFFF) {
|
if (track.loopIndex == 0xFFFF) {
|
||||||
if (v7 >= track.sequenceTimes.Count()) {
|
if (sequenceIndex >= track.sequenceTimes.Count()) {
|
||||||
v7 = 0;
|
sequenceIndex = 0;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
v6 = this->m_loops[track.loopIndex];
|
sequenceDuration = this->m_loops[track.loopIndex];
|
||||||
v7 = 0;
|
sequenceIndex = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t v12 = track.sequenceTimes[v7].times.Count();
|
auto& sequenceTimes = track.sequenceTimes[sequenceIndex];
|
||||||
|
auto numKeys = sequenceTimes.times.Count();
|
||||||
|
auto keyTimes = sequenceTimes.times.Data();
|
||||||
|
|
||||||
if (v12 <= 1) {
|
if (numKeys <= 1) {
|
||||||
nextKey = 0;
|
nextKey = 0;
|
||||||
currentKey = 0;
|
currentKey = 0;
|
||||||
ratio = 0.0f;
|
ratio = 0.0f;
|
||||||
@ -871,29 +873,27 @@ void CM2Model::FindKey(M2ModelBoneSeq* sequence, const M2TrackBase& track, uint3
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (currentKey >= v12) {
|
if (currentKey >= numKeys) {
|
||||||
currentKey = 0;
|
currentKey = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t v15 = currentKey;
|
uint32_t v15 = currentKey;
|
||||||
auto& v24 = track.sequenceTimes[v7];
|
auto v16 = sequenceDuration - keyTimes[currentKey];
|
||||||
auto v14 = v24.times.Data();
|
|
||||||
auto v16 = v6 - v14[currentKey];
|
|
||||||
|
|
||||||
if (v16 >= 500) {
|
if (v16 >= 500) {
|
||||||
if (v16 < 0xFFFFFE0C) {
|
if (v16 < 0xFFFFFE0C) {
|
||||||
v15 = 0;
|
v15 = 0;
|
||||||
|
|
||||||
if (v6 >= 500) {
|
if (sequenceDuration >= 500) {
|
||||||
uint32_t v20 = v12;
|
uint32_t v20 = numKeys;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
uint32_t v21 = (v20 + v15) >> 1;
|
uint32_t v21 = (v20 + v15) >> 1;
|
||||||
|
|
||||||
if (v6 >= v14[v21]) {
|
if (sequenceDuration >= keyTimes[v21]) {
|
||||||
v15 = v21 + 1;
|
v15 = v21 + 1;
|
||||||
|
|
||||||
if (v21 + 1 >= v12 || v6 < v14[v21 + 1]) {
|
if (v21 + 1 >= numKeys || sequenceDuration < keyTimes[v21 + 1]) {
|
||||||
v15 = v21;
|
v15 = v21;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -902,22 +902,22 @@ void CM2Model::FindKey(M2ModelBoneSeq* sequence, const M2TrackBase& track, uint3
|
|||||||
}
|
}
|
||||||
} while (v15 < v20);
|
} while (v15 < v20);
|
||||||
} else {
|
} else {
|
||||||
uint32_t* v19 = v14 + 1;
|
uint32_t* v19 = keyTimes + 1;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
if (*v19 > v6) {
|
if (*v19 > sequenceDuration) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
++v15;
|
++v15;
|
||||||
++v19;
|
++v19;
|
||||||
} while (v15 < v12 - 1);
|
} while (v15 < numKeys - 1);
|
||||||
}
|
}
|
||||||
} else if (v15) {
|
} else if (v15) {
|
||||||
uint32_t* v18 = &v14[v15];
|
uint32_t* v18 = &keyTimes[v15];
|
||||||
|
|
||||||
do {
|
do {
|
||||||
if (*v18 <= v6) {
|
if (*v18 <= sequenceDuration) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -925,20 +925,20 @@ void CM2Model::FindKey(M2ModelBoneSeq* sequence, const M2TrackBase& track, uint3
|
|||||||
--v18;
|
--v18;
|
||||||
} while (v15);
|
} while (v15);
|
||||||
}
|
}
|
||||||
} else if (v15 < v12 - 1) {
|
} else if (v15 < numKeys - 1) {
|
||||||
uint32_t* v17 = &v14[v15 + 1];
|
uint32_t* v17 = &keyTimes[v15 + 1];
|
||||||
|
|
||||||
do {
|
do {
|
||||||
if (*v17 > v6) {
|
if (*v17 > sequenceDuration) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
++v15;
|
++v15;
|
||||||
++v17;
|
++v17;
|
||||||
} while (v15 < v12 - 1);
|
} while (v15 < numKeys - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (v15 + 1 >= v24.times.Count()) {
|
if (v15 + 1 >= numKeys) {
|
||||||
nextKey = v15;
|
nextKey = v15;
|
||||||
currentKey = v15;
|
currentKey = v15;
|
||||||
ratio = 0.0f;
|
ratio = 0.0f;
|
||||||
@ -946,10 +946,10 @@ void CM2Model::FindKey(M2ModelBoneSeq* sequence, const M2TrackBase& track, uint3
|
|||||||
currentKey = v15;
|
currentKey = v15;
|
||||||
nextKey = v15 + 1;
|
nextKey = v15 + 1;
|
||||||
|
|
||||||
uint32_t* v22 = &v24.times[v15];
|
auto currentKeyTime = keyTimes[currentKey];
|
||||||
float v23 = static_cast<float>(v6 - v22[0]);
|
auto nextKeyTime = keyTimes[nextKey];
|
||||||
float v25 = static_cast<float>(v22[1] - v22[0]);
|
|
||||||
ratio = v23 / v25;
|
ratio = static_cast<float>(sequenceDuration - currentKeyTime) / static_cast<float>(nextKeyTime - currentKeyTime);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user