diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2024-02-20 23:59:17 +0100 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-02-20 23:59:17 +0100 |
commit | dc2d1e3f479fb64e6da23c00d38ed030a085fb6c (patch) | |
tree | cd1f40707b58ef9a6c1c27609c3964eafb4ff12b | |
parent | 1aab6e96b96af734d1fe5979d30d1a4232cb270d (diff) | |
parent | b7e5ea8a398b9b30e5e5c0a984559c9e0e3df491 (diff) | |
download | redot-engine-dc2d1e3f479fb64e6da23c00d38ed030a085fb6c.tar.gz |
Merge pull request #79452 from /ysort-update-first-item-position
-rw-r--r-- | doc/classes/CanvasItem.xml | 2 | ||||
-rw-r--r-- | servers/rendering/renderer_canvas_cull.cpp | 6 |
2 files changed, 5 insertions, 3 deletions
diff --git a/doc/classes/CanvasItem.xml b/doc/classes/CanvasItem.xml index 0113131f25..7604e4b75c 100644 --- a/doc/classes/CanvasItem.xml +++ b/doc/classes/CanvasItem.xml @@ -606,7 +606,7 @@ [b]Note:[/b] For controls that inherit [Popup], the correct way to make them visible is to call one of the multiple [code]popup*()[/code] functions instead. </member> <member name="y_sort_enabled" type="bool" setter="set_y_sort_enabled" getter="is_y_sort_enabled" default="false"> - If [code]true[/code], child nodes with the lowest Y position are drawn before those with a higher Y position. If [code]false[/code], Y-sorting is disabled. Y-sorting only affects children that inherit from [CanvasItem]. + If [code]true[/code], this [CanvasItem] and its [CanvasItem] child nodes are sorted according to the Y position. Nodes with a lower Y position are drawn before those with a higher Y position. If [code]false[/code], Y-sorting is disabled. You can nest nodes with Y-sorting. Child Y-sorted nodes are sorted in the same space as the parent Y-sort. This feature allows you to organize a scene better or divide it into multiple ones without changing your scene tree. </member> <member name="z_as_relative" type="bool" setter="set_z_as_relative" getter="is_z_relative" default="true"> diff --git a/servers/rendering/renderer_canvas_cull.cpp b/servers/rendering/renderer_canvas_cull.cpp index 94355f2c5f..65fcdb9751 100644 --- a/servers/rendering/renderer_canvas_cull.cpp +++ b/servers/rendering/renderer_canvas_cull.cpp @@ -311,12 +311,14 @@ void RendererCanvasCull::_cull_canvas_item(Item *p_canvas_item, const Transform2 child_item_count = ci->ysort_children_count + 1; child_items = (Item **)alloca(child_item_count * sizeof(Item *)); + ci->ysort_xform = ci->xform.affine_inverse(); + ci->ysort_pos = Vector2(); + ci->ysort_modulate = Color(1, 1, 1, 1); + ci->ysort_index = 0; ci->ysort_parent_abs_z_index = parent_z; child_items[0] = ci; int i = 1; _collect_ysort_children(ci, Transform2D(), p_material_owner, Color(1, 1, 1, 1), child_items, i, p_z); - ci->ysort_xform = ci->xform.affine_inverse(); - ci->ysort_modulate = Color(1, 1, 1, 1); SortArray<Item *, ItemPtrSort> sorter; sorter.sort(child_items, child_item_count); |