summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYuri Sizov <11782833+YuriSizov@users.noreply.github.com>2023-05-18 21:54:35 +0200
committerGitHub <noreply@github.com>2023-05-18 21:54:35 +0200
commit5bb7d585a5e151f3fa387de7dd97d7aebc5abfd5 (patch)
treea57e4d4c4599d207b273d4370ec49dfaf70fd482
parent2dc3294ad4822c6872ad58431cd1c9a58306aeac (diff)
parent18c792fe42fcb01dce5cac8f8b3afed68320d229 (diff)
downloadredot-engine-5bb7d585a5e151f3fa387de7dd97d7aebc5abfd5.tar.gz
Merge pull request #51448 from SaracenOne/animation_tree_parallel_state_machine_fix
Allocate unique `track_blends` vector for animation states
-rw-r--r--scene/animation/animation_tree.cpp4
-rw-r--r--scene/animation/animation_tree.h2
2 files changed, 3 insertions, 3 deletions
diff --git a/scene/animation/animation_tree.cpp b/scene/animation/animation_tree.cpp
index c6cb3873e0..5d4d58f283 100644
--- a/scene/animation/animation_tree.cpp
+++ b/scene/animation/animation_tree.cpp
@@ -116,7 +116,7 @@ void AnimationNode::blend_animation(const StringName &p_animation, double p_time
AnimationState anim_state;
anim_state.blend = p_blend;
- anim_state.track_blends = &blends;
+ anim_state.track_blends = blends;
anim_state.delta = p_delta;
anim_state.time = p_time;
anim_state.animation = animation;
@@ -1124,7 +1124,7 @@ void AnimationTree::_process_graph(double p_delta) {
ERR_CONTINUE(!state.track_map.has(path));
int blend_idx = state.track_map[path];
ERR_CONTINUE(blend_idx < 0 || blend_idx >= state.track_count);
- real_t blend = (*as.track_blends)[blend_idx] * weight;
+ real_t blend = (as.track_blends)[blend_idx] * weight;
Animation::TrackType ttype = a->track_get_type(i);
if (ttype != Animation::TYPE_POSITION_3D && ttype != Animation::TYPE_ROTATION_3D && ttype != Animation::TYPE_SCALE_3D && track->type != ttype) {
diff --git a/scene/animation/animation_tree.h b/scene/animation/animation_tree.h
index 8ee8d30014..0346fc42a7 100644
--- a/scene/animation/animation_tree.h
+++ b/scene/animation/animation_tree.h
@@ -68,7 +68,7 @@ public:
Ref<Animation> animation;
double time = 0.0;
double delta = 0.0;
- const Vector<real_t> *track_blends = nullptr;
+ Vector<real_t> track_blends;
real_t blend = 0.0;
bool seeked = false;
bool is_external_seeking = false;