From 8df06279c6e9dabbe900fc89e8f1d724f1d30e40 Mon Sep 17 00:00:00 2001 From: "Silc Lizard (Tokage) Renew" <61938263+TokageItLab@users.noreply.github.com> Date: Sun, 14 Sep 2025 15:08:49 +0900 Subject: [PATCH] Fix Reset on Save corrupt poses if scene has multiple Skeletons --- scene/3d/modifier_bone_target_3d.h | 3 +++ scene/3d/skeleton_3d.cpp | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/scene/3d/modifier_bone_target_3d.h b/scene/3d/modifier_bone_target_3d.h index 02a9e24e494..05b6381c1b6 100644 --- a/scene/3d/modifier_bone_target_3d.h +++ b/scene/3d/modifier_bone_target_3d.h @@ -45,6 +45,9 @@ protected: virtual void _process_modification(double p_delta) override; public: +#ifdef TOOLS_ENABLED + virtual bool is_processed_on_saving() const override { return true; } +#endif void set_bone_name(const String &p_bone_name); String get_bone_name() const; void set_bone(int p_bone); diff --git a/scene/3d/skeleton_3d.cpp b/scene/3d/skeleton_3d.cpp index 153bf483093..117de197580 100644 --- a/scene/3d/skeleton_3d.cpp +++ b/scene/3d/skeleton_3d.cpp @@ -317,11 +317,11 @@ void Skeleton3D::_notification(int p_what) { Bone *bonesptr = bones.ptr(); int len = bones.size(); - thread_local LocalVector bone_global_pose_dirty_backup; + LocalVector bone_global_pose_dirty_backup; // Process modifiers. - thread_local LocalVector bones_backup; + LocalVector bones_backup; _find_modifiers(); if (!modifiers.is_empty()) { bones_backup.resize(bones.size());