Skip to content

Commit

Permalink
Fix errors with invalid bone node path in Polygon2D
Browse files Browse the repository at this point in the history
NodePath properties are designed to be relative to the given node, so
validity checks are failing in the editor for Polygon2D nodes, which are
relative to the Skeleton2D node rather than the Polygon2D node.

Fixed by saving bone paths as String properties instead of NodePath.

Shouldn't cause a difference for performance since NodePath properties
are technically saved as String anyway.
  • Loading branch information
pouleyKetchoupp committed Nov 3, 2021
1 parent 795cd2e commit 8d9619a
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions scene/2d/polygon_2d.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -554,7 +554,9 @@ void Polygon2D::set_bone_path(int p_index, const NodePath &p_path) {
Array Polygon2D::_get_bones() const {
Array bones;
for (int i = 0; i < get_bone_count(); i++) {
bones.push_back(get_bone_path(i));
// Convert path property to String to avoid errors due to invalid node path in editor,
// because it's relative to the Skeleton2D node and not Polygon2D.
bones.push_back(String(get_bone_path(i)));
bones.push_back(get_bone_weights(i));
}
return bones;
Expand All @@ -564,7 +566,8 @@ void Polygon2D::_set_bones(const Array &p_bones) {
ERR_FAIL_COND(p_bones.size() & 1);
clear_bones();
for (int i = 0; i < p_bones.size(); i += 2) {
add_bone(p_bones[i], p_bones[i + 1]);
// Convert back from String to NodePath.
add_bone(NodePath(p_bones[i]), p_bones[i + 1]);
}
}

Expand Down

0 comments on commit 8d9619a

Please sign in to comment.