Browse Source

Merge pull request #101450 from TokageItLab/reset-anim-skeleton

Change reset timing of the AnimationMixer and Skeleton on save
Rémi Verschelde 7 months ago
parent
commit
bb8001c83a
2 changed files with 9 additions and 2 deletions
  1. 3 2
      editor/editor_node.cpp
  2. 6 0
      scene/3d/skeleton_3d.cpp

+ 3 - 2
editor/editor_node.cpp

@@ -1910,11 +1910,12 @@ void EditorNode::_save_scene(String p_file, int idx) {
 		return;
 	}
 
+	List<Pair<AnimationMixer *, Ref<AnimatedValuesBackup>>> anim_backups;
+	_reset_animation_mixers(scene, &anim_backups);
+
 	scene->propagate_notification(NOTIFICATION_EDITOR_PRE_SAVE);
 
 	editor_data.apply_changes_in_editors();
-	List<Pair<AnimationMixer *, Ref<AnimatedValuesBackup>>> anim_backups;
-	_reset_animation_mixers(scene, &anim_backups);
 	save_default_environment();
 
 	_save_editor_states(p_file, idx);

+ 6 - 0
scene/3d/skeleton_3d.cpp

@@ -325,6 +325,12 @@ void Skeleton3D::_notification(int p_what) {
 			update_flags = UPDATE_FLAG_POSE;
 			_notification(NOTIFICATION_UPDATE_SKELETON);
 		} break;
+#ifdef TOOLS_ENABLED
+		case NOTIFICATION_EDITOR_PRE_SAVE: {
+			force_update_all_dirty_bones();
+			emit_signal(SceneStringName(skeleton_updated));
+		} break;
+#endif // TOOLS_ENABLED
 		case NOTIFICATION_UPDATE_SKELETON: {
 			// Update bone transforms to apply unprocessed poses.
 			force_update_all_dirty_bones();