You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-08 12:40:44 +00:00
Display nodes without rect's position
This commit is contained in:
62
editor/icons/icon_editor_position_previous.svg
Normal file
62
editor/icons/icon_editor_position_previous.svg
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="16"
|
||||||
|
height="16"
|
||||||
|
version="1.1"
|
||||||
|
viewBox="0 0 16 16"
|
||||||
|
id="svg919"
|
||||||
|
sodipodi:docname="icon_editor_position_previous.svg"
|
||||||
|
inkscape:version="0.92.2 5c3e80d, 2017-08-06">
|
||||||
|
<metadata
|
||||||
|
id="metadata925">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs923" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1356"
|
||||||
|
inkscape:window-height="742"
|
||||||
|
id="namedview921"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="11.313709"
|
||||||
|
inkscape:cx="14.523034"
|
||||||
|
inkscape:cy="-5.7323703"
|
||||||
|
inkscape:window-x="4"
|
||||||
|
inkscape:window-y="20"
|
||||||
|
inkscape:window-maximized="0"
|
||||||
|
inkscape:current-layer="svg919"
|
||||||
|
inkscape:snap-page="true" />
|
||||||
|
<path
|
||||||
|
style="fill:#6699ff;stroke:none;fill-opacity:0.69803923"
|
||||||
|
d="M 7 1 L 7 4.0605469 A 4.2661548 4.0576186 0 0 1 8 3.9414062 A 4.2661548 4.0576186 0 0 1 9 4.0605469 L 9 1 L 7 1 z M 1 7 L 1 9 L 3.8691406 9 A 4.2661548 4.0576186 0 0 1 3.734375 8 A 4.2661548 4.0576186 0 0 1 3.8710938 7 L 1 7 z M 12.130859 7 A 4.2661548 4.0576186 0 0 1 12.265625 8 A 4.2661548 4.0576186 0 0 1 12.128906 9 L 15 9 L 15 7 L 12.130859 7 z M 7 11.939453 L 7 15 L 9 15 L 9 11.939453 A 4.2661548 4.0576186 0 0 1 8 12.058594 A 4.2661548 4.0576186 0 0 1 7 11.939453 z "
|
||||||
|
id="path915" />
|
||||||
|
<circle
|
||||||
|
style="fill:#6699ff;fill-opacity:0.69803923;stroke-width:0.97338283"
|
||||||
|
cx="8"
|
||||||
|
cy="8"
|
||||||
|
r="2.9201488"
|
||||||
|
id="circle1517" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.2 KiB |
@@ -2143,7 +2143,9 @@ void CanvasItemEditor::_draw_grid() {
|
|||||||
|
|
||||||
void CanvasItemEditor::_draw_selection() {
|
void CanvasItemEditor::_draw_selection() {
|
||||||
Ref<Texture> pivot_icon = get_icon("EditorPivot", "EditorIcons");
|
Ref<Texture> pivot_icon = get_icon("EditorPivot", "EditorIcons");
|
||||||
Ref<Texture> position_icon = get_icon("EditorPivot", "EditorIcons");
|
Ref<Texture> position_icon = get_icon("EditorPosition", "EditorIcons");
|
||||||
|
Ref<Texture> previous_position_icon = get_icon("EditorPositionPrevious", "EditorIcons");
|
||||||
|
|
||||||
RID ci = viewport->get_canvas_item();
|
RID ci = viewport->get_canvas_item();
|
||||||
|
|
||||||
List<CanvasItem *> selection = _get_edited_canvas_items(false, false);
|
List<CanvasItem *> selection = _get_edited_canvas_items(false, false);
|
||||||
@@ -2174,7 +2176,7 @@ void CanvasItemEditor::_draw_selection() {
|
|||||||
viewport->draw_line(pre_drag_endpoints[i], pre_drag_endpoints[(i + 1) % 4], pre_drag_color, 2);
|
viewport->draw_line(pre_drag_endpoints[i], pre_drag_endpoints[(i + 1) % 4], pre_drag_color, 2);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
viewport->draw_texture(position_icon, (pre_drag_xform.xform(Point2()) - (position_icon->get_size() / 2)).floor(), Color(0.5, 1.0, 2.0));
|
viewport->draw_texture(previous_position_icon, (pre_drag_xform.xform(Point2()) - (previous_position_icon->get_size() / 2)).floor());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2572,6 +2574,52 @@ void CanvasItemEditor::_draw_bones() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CanvasItemEditor::_draw_invisible_nodes_positions(Node *p_node, const Transform2D &p_parent_xform, const Transform2D &p_canvas_xform) {
|
||||||
|
ERR_FAIL_COND(!p_node);
|
||||||
|
|
||||||
|
Node *scene = editor->get_edited_scene();
|
||||||
|
if (p_node != scene && p_node->get_owner() != scene && !scene->is_editable_instance(p_node->get_owner()))
|
||||||
|
return;
|
||||||
|
CanvasItem *canvas_item = Object::cast_to<CanvasItem>(p_node);
|
||||||
|
if (canvas_item && !canvas_item->is_visible())
|
||||||
|
return;
|
||||||
|
|
||||||
|
Transform2D parent_xform = p_parent_xform;
|
||||||
|
Transform2D canvas_xform = p_canvas_xform;
|
||||||
|
|
||||||
|
if (canvas_item && !canvas_item->is_set_as_toplevel()) {
|
||||||
|
parent_xform = parent_xform * canvas_item->get_transform();
|
||||||
|
} else {
|
||||||
|
CanvasLayer *cl = Object::cast_to<CanvasLayer>(p_node);
|
||||||
|
parent_xform = Transform2D();
|
||||||
|
canvas_xform = cl ? cl->get_transform() : p_canvas_xform;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = p_node->get_child_count() - 1; i >= 0; i--) {
|
||||||
|
_draw_invisible_nodes_positions(p_node->get_child(i), parent_xform, canvas_xform);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (canvas_item && !canvas_item->_edit_use_rect() && !editor_selection->is_selected(canvas_item)) {
|
||||||
|
Transform2D xform = transform * canvas_xform * parent_xform;
|
||||||
|
|
||||||
|
Ref<Texture> position_icon = get_icon("EditorPivot", "EditorIcons");
|
||||||
|
Transform2D transform = Transform2D(xform.get_rotation(), xform.get_origin());
|
||||||
|
viewport->draw_set_transform_matrix(transform);
|
||||||
|
viewport->draw_texture(position_icon, -position_icon->get_size() / 2, Color(1.0, 1.0, 1.0, 0.5));
|
||||||
|
viewport->draw_set_transform_matrix(Transform2D());
|
||||||
|
|
||||||
|
Ref<Texture> node_icon;
|
||||||
|
if (has_icon(canvas_item->get_class(), "EditorIcons"))
|
||||||
|
node_icon = get_icon(canvas_item->get_class(), "EditorIcons");
|
||||||
|
else
|
||||||
|
node_icon = get_icon("Object", "EditorIcons");
|
||||||
|
viewport->draw_texture(node_icon, xform.get_origin() + position_icon->get_size() / 3, Color(1.0, 1.0, 1.0, 0.5));
|
||||||
|
|
||||||
|
Ref<Font> font = get_font("font", "Label");
|
||||||
|
viewport->draw_string(font, xform.get_origin() + position_icon->get_size() / 3 + node_icon->get_size() + Point2(4, -3), canvas_item->get_name(), Color(1.0, 1.0, 1.0, 0.5));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CanvasItemEditor::_draw_locks_and_groups(Node *p_node, const Transform2D &p_parent_xform, const Transform2D &p_canvas_xform) {
|
void CanvasItemEditor::_draw_locks_and_groups(Node *p_node, const Transform2D &p_parent_xform, const Transform2D &p_canvas_xform) {
|
||||||
ERR_FAIL_COND(!p_node);
|
ERR_FAIL_COND(!p_node);
|
||||||
|
|
||||||
@@ -2676,8 +2724,10 @@ void CanvasItemEditor::_draw_viewport() {
|
|||||||
_draw_grid();
|
_draw_grid();
|
||||||
_draw_selection();
|
_draw_selection();
|
||||||
_draw_axis();
|
_draw_axis();
|
||||||
if (editor->get_edited_scene())
|
if (editor->get_edited_scene()) {
|
||||||
_draw_locks_and_groups(editor->get_edited_scene());
|
_draw_locks_and_groups(editor->get_edited_scene());
|
||||||
|
_draw_invisible_nodes_positions(editor->get_edited_scene());
|
||||||
|
}
|
||||||
|
|
||||||
RID ci = viewport->get_canvas_item();
|
RID ci = viewport->get_canvas_item();
|
||||||
VisualServer::get_singleton()->canvas_item_add_set_transform(ci, Transform2D());
|
VisualServer::get_singleton()->canvas_item_add_set_transform(ci, Transform2D());
|
||||||
|
|||||||
@@ -387,6 +387,7 @@ class CanvasItemEditor : public VBoxContainer {
|
|||||||
void _draw_selection();
|
void _draw_selection();
|
||||||
void _draw_axis();
|
void _draw_axis();
|
||||||
void _draw_bones();
|
void _draw_bones();
|
||||||
|
void _draw_invisible_nodes_positions(Node *p_node, const Transform2D &p_parent_xform = Transform2D(), const Transform2D &p_canvas_xform = Transform2D());
|
||||||
void _draw_locks_and_groups(Node *p_node, const Transform2D &p_parent_xform = Transform2D(), const Transform2D &p_canvas_xform = Transform2D());
|
void _draw_locks_and_groups(Node *p_node, const Transform2D &p_parent_xform = Transform2D(), const Transform2D &p_canvas_xform = Transform2D());
|
||||||
|
|
||||||
void _draw_viewport();
|
void _draw_viewport();
|
||||||
|
|||||||
Reference in New Issue
Block a user