When an animationplayer sets a property on itself recreate the caches
this fixes #25507
This commit is contained in:
@ -344,10 +344,16 @@ void AnimationPlayer::_animation_process_animation(AnimationData *p_anim, float
|
|||||||
|
|
||||||
for (int i = 0; i < a->get_track_count(); i++) {
|
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];
|
TrackNodeCache *nc = p_anim->node_cache[i];
|
||||||
|
|
||||||
if (!nc) // no node cache for this track, skip it
|
if (!nc)
|
||||||
continue;
|
continue; // no node cache for this track, skip it
|
||||||
|
|
||||||
if (!a->track_is_enabled(i))
|
if (!a->track_is_enabled(i))
|
||||||
continue; // do nothing if the track is disabled
|
continue; // do nothing if the track is disabled
|
||||||
|
|||||||
Reference in New Issue
Block a user