Bläddra i källkod

fix cubic interpolate when looping 3.x

Co-authored-by: robfram <[email protected]>
(cherry picked from commit 7b9a912ff62a95650744f0355ba319789f262285)
Silc 'Tokage' Renew 3 år sedan
förälder
incheckning
5e83677408
1 ändrade filer med 10 tillägg och 2 borttagningar
  1. 10 2
      scene/resources/animation.cpp

+ 10 - 2
scene/resources/animation.cpp

@@ -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);