From 482531c4b83dd904990c9b8aaa61167ec5ad39c2 Mon Sep 17 00:00:00 2001 From: Nazarii Date: Sun, 8 Sep 2024 15:04:52 +0300 Subject: [PATCH] Use thread_local for bones_backup --- scene/3d/skeleton_3d.cpp | 7 ++++--- scene/3d/skeleton_3d.h | 1 - 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/scene/3d/skeleton_3d.cpp b/scene/3d/skeleton_3d.cpp index 8c31878c24..9665ad7024 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 8b03bb8312..09ed303f33 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.