fix cubic interpolate when looping 3.x

Co-authored-by: robfram <robfram@gmail.com>
(cherry picked from commit 7b9a912ff6)
This commit is contained in:
Silc 'Tokage' Renew 2022-03-01 19:09:05 +09:00 committed by Rémi Verschelde
parent 4b1ee744c7
commit 5e83677408

View File

@ -1718,11 +1718,19 @@ T Animation::_interpolate(const Vector<TKey<T>> &p_keys, float p_time, Interpola
case INTERPOLATION_CUBIC: {
int pre = idx - 1;
if (pre < 0) {
pre = 0;
if (loop && p_loop_wrap) {
pre = len - 1;
} else {
pre = 0;
}
}
int post = next + 1;
if (post >= len) {
post = next;
if (loop && p_loop_wrap) {
post = 0;
} else {
post = next;
}
}
return _cubic_interpolate(p_keys[pre].value, p_keys[idx].value, p_keys[next].value, p_keys[post].value, c);