Преглед изворни кода

Merge pull request #110506 from TokageItLab/reset-mod

Fix Reset on Save corrupt poses if scene has multiple Skeletons
Thaddeus Crews пре 1 недеља
родитељ
комит
5ee1384cbd
2 измењених фајлова са 5 додато и 2 уклоњено
  1. 3 0
      scene/3d/modifier_bone_target_3d.h
  2. 2 2
      scene/3d/skeleton_3d.cpp

+ 3 - 0
scene/3d/modifier_bone_target_3d.h

@@ -45,6 +45,9 @@ protected:
 	virtual void _process_modification(double p_delta) override;
 	virtual void _process_modification(double p_delta) override;
 
 
 public:
 public:
+#ifdef TOOLS_ENABLED
+	virtual bool is_processed_on_saving() const override { return true; }
+#endif
 	void set_bone_name(const String &p_bone_name);
 	void set_bone_name(const String &p_bone_name);
 	String get_bone_name() const;
 	String get_bone_name() const;
 	void set_bone(int p_bone);
 	void set_bone(int p_bone);

+ 2 - 2
scene/3d/skeleton_3d.cpp

@@ -317,11 +317,11 @@ void Skeleton3D::_notification(int p_what) {
 			Bone *bonesptr = bones.ptr();
 			Bone *bonesptr = bones.ptr();
 			int len = bones.size();
 			int len = bones.size();
 
 
-			thread_local LocalVector<bool> bone_global_pose_dirty_backup;
+			LocalVector<bool> bone_global_pose_dirty_backup;
 
 
 			// Process modifiers.
 			// Process modifiers.
 
 
-			thread_local LocalVector<BonePoseBackup> bones_backup;
+			LocalVector<BonePoseBackup> bones_backup;
 			_find_modifiers();
 			_find_modifiers();
 			if (!modifiers.is_empty()) {
 			if (!modifiers.is_empty()) {
 				bones_backup.resize(bones.size());
 				bones_backup.resize(bones.size());