diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2024-07-01 10:07:37 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-07-01 10:07:37 +0200 |
commit | a05237f5d0b772d2bb2225f837354d95145c241e (patch) | |
tree | ab4aa642fd3d008885ef1686feab7073918697ee | |
parent | af529cb6be25767b1a83d0419c0df9a036bfe5a3 (diff) | |
parent | e8c2edefd1b6140a7f4f5d2b24666bf82640c18a (diff) | |
download | redot-engine-a05237f5d0b772d2bb2225f837354d95145c241e.tar.gz |
Merge pull request #93785 from TokageItLab/fix-bezier-init
Fix Bezier track init value on caching without RESET animation
-rw-r--r-- | scene/animation/animation_mixer.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/scene/animation/animation_mixer.cpp b/scene/animation/animation_mixer.cpp index c74348c2e7..e7626b3c2d 100644 --- a/scene/animation/animation_mixer.cpp +++ b/scene/animation/animation_mixer.cpp @@ -691,7 +691,9 @@ bool AnimationMixer::_update_caches() { track = track_value; - track_value->init_value = anim->track_get_key_value(i, 0); + bool is_value = track_src_type == Animation::TYPE_VALUE; + + track_value->init_value = is_value ? anim->track_get_key_value(i, 0) : (anim->track_get_key_value(i, 0).operator Array())[0]; track_value->init_value.zero(); track_value->is_init = false; @@ -703,7 +705,7 @@ bool AnimationMixer::_update_caches() { if (has_reset_anim) { int rt = reset_anim->find_track(path, track_src_type); if (rt >= 0) { - if (track_src_type == Animation::TYPE_VALUE) { + if (is_value) { if (reset_anim->track_get_key_count(rt) > 0) { track_value->init_value = reset_anim->track_get_key_value(rt, 0); } |