diff --git a/scene/3d/skeleton_3d.cpp b/scene/3d/skeleton_3d.cpp index 8c31878c241..9665ad70242 100644 --- a/scene/3d/skeleton_3d.cpp +++ b/scene/3d/skeleton_3d.cpp @@ -270,8 +270,6 @@ void Skeleton3D::_update_process_order() const { } } - bones_backup.resize(bones.size()); - concatenated_bone_names = StringName(); _update_bones_nested_set(); @@ -339,11 +337,14 @@ void Skeleton3D::_notification(int p_what) { thread_local LocalVector bone_global_pose_dirty_backup; // Process modifiers. + + thread_local LocalVector bones_backup; _find_modifiers(); if (!modifiers.is_empty()) { + bones_backup.resize(bones.size()); // Store unmodified bone poses. for (uint32_t i = 0; i < bones.size(); i++) { - bones_backup[i].save(bones[i]); + bones_backup[i].save(bonesptr[i]); } // Store dirty flags for global bone poses. bone_global_pose_dirty_backup = bone_global_pose_dirty; diff --git a/scene/3d/skeleton_3d.h b/scene/3d/skeleton_3d.h index 8b03bb83121..09ed303f33c 100644 --- a/scene/3d/skeleton_3d.h +++ b/scene/3d/skeleton_3d.h @@ -183,7 +183,6 @@ private: void _process_modifiers(); void _process_changed(); void _make_modifiers_dirty(); - mutable LocalVector bones_backup; // Global bone pose calculation. mutable LocalVector nested_set_offset_to_bone_index; // Map from Bone::nested_set_offset to bone index.