You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-07 12:30:27 +00:00
Properly show 2D bone previews in 2D skeleton UV editor, fixes #20950
This commit is contained in:
@@ -963,14 +963,15 @@ void Polygon2DEditor::_uv_draw() {
|
|||||||
|
|
||||||
bool current = bone_path == skeleton->get_path_to(bone);
|
bool current = bone_path == skeleton->get_path_to(bone);
|
||||||
|
|
||||||
|
bool found_child = false;
|
||||||
|
|
||||||
for (int j = 0; j < bone->get_child_count(); j++) {
|
for (int j = 0; j < bone->get_child_count(); j++) {
|
||||||
|
|
||||||
Node2D *n = Object::cast_to<Node2D>(bone->get_child(j));
|
Bone2D *n = Object::cast_to<Bone2D>(bone->get_child(j));
|
||||||
if (!n)
|
if (!n)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
bool edit_bone = n->has_meta("_edit_bone_") && n->get_meta("_edit_bone_");
|
found_child = true;
|
||||||
if (edit_bone) {
|
|
||||||
|
|
||||||
Transform2D bone_xform = node->get_global_transform().affine_inverse() * (skeleton->get_global_transform() * bone->get_skeleton_rest());
|
Transform2D bone_xform = node->get_global_transform().affine_inverse() * (skeleton->get_global_transform() * bone->get_skeleton_rest());
|
||||||
Transform2D endpoint_xform = bone_xform * n->get_transform();
|
Transform2D endpoint_xform = bone_xform * n->get_transform();
|
||||||
@@ -979,6 +980,15 @@ void Polygon2DEditor::_uv_draw() {
|
|||||||
uv_edit_draw->draw_line(mtx.xform(bone_xform.get_origin()), mtx.xform(endpoint_xform.get_origin()), Color(0, 0, 0), current ? 5 : 4);
|
uv_edit_draw->draw_line(mtx.xform(bone_xform.get_origin()), mtx.xform(endpoint_xform.get_origin()), Color(0, 0, 0), current ? 5 : 4);
|
||||||
uv_edit_draw->draw_line(mtx.xform(bone_xform.get_origin()), mtx.xform(endpoint_xform.get_origin()), color, current ? 3 : 2);
|
uv_edit_draw->draw_line(mtx.xform(bone_xform.get_origin()), mtx.xform(endpoint_xform.get_origin()), color, current ? 3 : 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!found_child) {
|
||||||
|
//draw normally
|
||||||
|
Transform2D bone_xform = node->get_global_transform().affine_inverse() * (skeleton->get_global_transform() * bone->get_skeleton_rest());
|
||||||
|
Transform2D endpoint_xform = bone_xform * Transform2D(0, Vector2(bone->get_default_length(), 0));
|
||||||
|
|
||||||
|
Color color = current ? Color(1, 1, 1) : Color(0.5, 0.5, 0.5);
|
||||||
|
uv_edit_draw->draw_line(mtx.xform(bone_xform.get_origin()), mtx.xform(endpoint_xform.get_origin()), Color(0, 0, 0), current ? 5 : 4);
|
||||||
|
uv_edit_draw->draw_line(mtx.xform(bone_xform.get_origin()), mtx.xform(endpoint_xform.get_origin()), color, current ? 3 : 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user