diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2019-02-01 16:32:45 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-01 16:32:45 +0100 |
commit | 869887641f3d31f19837a34da116039a26618cb0 (patch) | |
tree | 7764e99dd79cda6623e0cbd55384f890f451ec53 /scene | |
parent | 58de38497839148ac5ea2062fdd360e82e1197aa (diff) | |
parent | 37aa06bf8af2fd9fa2a2d7e7dc6752e887ab8139 (diff) |
Merge pull request #25547 from hpvb/fix-25507
When an animationplayer sets a property on itself recreate the caches
Diffstat (limited to 'scene')
-rw-r--r-- | scene/animation/animation_player.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/scene/animation/animation_player.cpp b/scene/animation/animation_player.cpp index 1d2001c30d..4c249b117e 100644 --- a/scene/animation/animation_player.cpp +++ b/scene/animation/animation_player.cpp @@ -344,10 +344,16 @@ void AnimationPlayer::_animation_process_animation(AnimationData *p_anim, float for (int i = 0; i < a->get_track_count(); i++) { + // If an animation changes this animation (or it animates itself) + // we need to recreate our animation cache + if (p_anim->node_cache.size() != a->get_track_count()) { + _ensure_node_caches(p_anim); + } + TrackNodeCache *nc = p_anim->node_cache[i]; - if (!nc) // no node cache for this track, skip it - continue; + if (!nc) + continue; // no node cache for this track, skip it if (!a->track_is_enabled(i)) continue; // do nothing if the track is disabled |