From 37aa06bf8af2fd9fa2a2d7e7dc6752e887ab8139 Mon Sep 17 00:00:00 2001 From: Hein-Pieter van Braam Date: Fri, 1 Feb 2019 16:15:39 +0100 Subject: [PATCH] When an animationplayer sets a property on itself recreate the caches this fixes #25507 --- scene/animation/animation_player.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/scene/animation/animation_player.cpp b/scene/animation/animation_player.cpp index 1d2001c30db7..4c249b117ed2 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