Skip to content

Commit 4940c3c

Browse files
committed
Fix rest update process by dirty flag to not take into account pose
1 parent 1b4ed4c commit 4940c3c

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

scene/3d/skeleton_3d.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1116,6 +1116,12 @@ void Skeleton3D::_force_update_bone_children_transforms(int p_bone_idx) const {
11161116

11171117
// Loop through nested set.
11181118
for (int offset = 0; offset < bone_size; offset++) {
1119+
if (rest_dirty) {
1120+
int current_bone_idx = nested_set_offset_to_bone_index[offset];
1121+
Bone &b = bonesptr[current_bone_idx];
1122+
b.global_rest = b.parent >= 0 ? bonesptr[b.parent].global_rest * b.rest : b.rest; // Rest needs update apert from pose.
1123+
}
1124+
11191125
if (!bone_global_pose_dirty[offset]) {
11201126
continue;
11211127
}
@@ -1140,9 +1146,6 @@ void Skeleton3D::_force_update_bone_children_transforms(int p_bone_idx) const {
11401146
b.global_pose = b.rest;
11411147
}
11421148
}
1143-
if (rest_dirty) {
1144-
b.global_rest = b.parent >= 0 ? bonesptr[b.parent].global_rest * b.rest : b.rest;
1145-
}
11461149

11471150
#ifndef DISABLE_DEPRECATED
11481151
if (bone_enabled) {

0 commit comments

Comments
 (0)