mirror of
https://github.com/godotengine/godot.git
synced 2025-11-01 06:01:14 +00:00
Order of 2D nodes in tree affects drawing properly again.
This commit is contained in:
parent
fb72edf45e
commit
57ebad28a9
2 changed files with 20 additions and 0 deletions
|
|
@ -58,6 +58,12 @@ void VisualServerCanvas::_render_canvas_item(Item *p_canvas_item, const Transfor
|
||||||
if (!ci->visible)
|
if (!ci->visible)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (p_canvas_item->children_order_dirty) {
|
||||||
|
|
||||||
|
p_canvas_item->child_items.sort_custom<ItemIndexSort>();
|
||||||
|
p_canvas_item->children_order_dirty = false;
|
||||||
|
}
|
||||||
|
|
||||||
Rect2 rect = ci->get_rect();
|
Rect2 rect = ci->get_rect();
|
||||||
Transform2D xform = p_transform * ci->xform;
|
Transform2D xform = p_transform * ci->xform;
|
||||||
Rect2 global_rect = xform.xform(rect);
|
Rect2 global_rect = xform.xform(rect);
|
||||||
|
|
@ -171,6 +177,12 @@ void VisualServerCanvas::render_canvas(Canvas *p_canvas, const Transform2D &p_tr
|
||||||
|
|
||||||
VSG::canvas_render->canvas_begin();
|
VSG::canvas_render->canvas_begin();
|
||||||
|
|
||||||
|
if (p_canvas->children_order_dirty) {
|
||||||
|
|
||||||
|
p_canvas->child_items.sort();
|
||||||
|
p_canvas->children_order_dirty = false;
|
||||||
|
}
|
||||||
|
|
||||||
int l = p_canvas->child_items.size();
|
int l = p_canvas->child_items.size();
|
||||||
Canvas::ChildItem *ci = p_canvas->child_items.ptr();
|
Canvas::ChildItem *ci = p_canvas->child_items.ptr();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -63,6 +63,14 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct ItemIndexSort {
|
||||||
|
|
||||||
|
_FORCE_INLINE_ bool operator()(const Item *p_left, const Item *p_right) const {
|
||||||
|
|
||||||
|
return p_left->index < p_right->index;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
struct ItemPtrSort {
|
struct ItemPtrSort {
|
||||||
|
|
||||||
_FORCE_INLINE_ bool operator()(const Item *p_left, const Item *p_right) const {
|
_FORCE_INLINE_ bool operator()(const Item *p_left, const Item *p_right) const {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue