File tree Expand file tree Collapse file tree 2 files changed +18
-0
lines changed
Expand file tree Collapse file tree 2 files changed +18
-0
lines changed Original file line number Diff line number Diff line change @@ -213,6 +213,19 @@ void RetargetModifier3D::_reset_child_skeletons() {
213213 child_skeletons.clear ();
214214}
215215
216+ #ifdef TOOLS_ENABLED
217+ void RetargetModifier3D::_force_update_child_skeletons () {
218+ for (const RetargetInfo &E : child_skeletons) {
219+ Skeleton3D *c = Object::cast_to<Skeleton3D>(ObjectDB::get_instance (E.skeleton_id ));
220+ if (!c) {
221+ continue ;
222+ }
223+ c->force_update_all_dirty_bones ();
224+ c->emit_signal (SceneStringName (skeleton_updated));
225+ }
226+ }
227+ #endif // TOOLS_ENABLED
228+
216229// / General functions
217230
218231void RetargetModifier3D::add_child_notify (Node *p_child) {
@@ -455,6 +468,7 @@ void RetargetModifier3D::_notification(int p_what) {
455468#ifdef TOOLS_ENABLED
456469 case NOTIFICATION_EDITOR_PRE_SAVE: {
457470 _reset_child_skeleton_poses ();
471+ _force_update_child_skeletons ();
458472 } break ;
459473#endif // TOOLS_ENABLED
460474 case NOTIFICATION_EXIT_TREE: {
Original file line number Diff line number Diff line change @@ -70,6 +70,10 @@ class RetargetModifier3D : public SkeletonModifier3D {
7070 void _reset_child_skeleton_poses ();
7171 void _reset_child_skeletons ();
7272
73+ #ifdef TOOLS_ENABLED
74+ void _force_update_child_skeletons ();
75+ #endif // TOOLS_ENABLED
76+
7377 void cache_rests_with_reset ();
7478 void cache_rests ();
7579 Vector<RetargetBoneInfo> cache_bone_global_rests (Skeleton3D *p_skeleton);
You can’t perform that action at this time.
0 commit comments