Merge pull request #109444 from thederickff/ba-transform-before-esk

Fix `BoneAttachment3D` getting global transform of external skeleton before it `is_inside_tree()`
This commit is contained in:
Thaddeus Crews
2025-08-11 09:55:22 -05:00

View File

@ -301,7 +301,12 @@ void BoneAttachment3D::on_skeleton_update() {
if (sk) {
if (!override_pose) {
if (use_external_skeleton) {
if (sk->is_inside_tree()) {
set_global_transform(sk->get_global_transform() * sk->get_bone_global_pose(bone_idx));
// Else, do nothing, the transform will be set when the skeleton enters the tree:
// Skeleton3D::_notification(NOTIFICATION_ENTER_TREE) -> calls Skeleton3D::_notification(NOTIFICATION_UPDATE_SKELETON)
// -> emits skeleton_updated signal -> connected to BoneAttachment3D::on_skeleton_update()
}
} else {
set_transform(sk->get_bone_global_pose(bone_idx));
}