You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-13 13:31:48 +00:00
Merge pull request #87050 from nikitalita/convert-3.x-skeletons
Skeleton3D: Convert 3.x skeletons
This commit is contained in:
@@ -94,6 +94,19 @@ bool Skeleton3D::_set(const StringName &p_path, const Variant &p_value) {
|
|||||||
set_bone_pose_rotation(which, p_value);
|
set_bone_pose_rotation(which, p_value);
|
||||||
} else if (what == "scale") {
|
} else if (what == "scale") {
|
||||||
set_bone_pose_scale(which, p_value);
|
set_bone_pose_scale(which, p_value);
|
||||||
|
#ifndef DISABLE_DEPRECATED
|
||||||
|
} else if (what == "pose") {
|
||||||
|
// Kept for compatibility from 3.x to 4.x.
|
||||||
|
WARN_DEPRECATED_MSG("Skeleton uses old pose format, which is deprecated (and loads slower). Consider re-importing or re-saving the scene." +
|
||||||
|
(is_inside_tree() ? vformat(" Path: \"%s\"", get_path()) : String()));
|
||||||
|
// Old Skeleton poses were relative to rest, new ones are absolute, so we need to recompute the pose.
|
||||||
|
// Skeleton3D nodes were always written with rest before pose, so this *SHOULD* work...
|
||||||
|
Transform3D rest = get_bone_rest(which);
|
||||||
|
Transform3D pose = rest * (Transform3D)p_value;
|
||||||
|
set_bone_pose_position(which, pose.origin);
|
||||||
|
set_bone_pose_rotation(which, pose.basis.get_rotation_quaternion());
|
||||||
|
set_bone_pose_scale(which, pose.basis.get_scale());
|
||||||
|
#endif
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user