You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-07 12:30:27 +00:00
Remove NOTIFICATION_MOVED_IN_PARENT
* This notification makes node children management very inefficient. * Replaced by a NOTIFICATION_CHILDREN_CHANGED (and children_changed signal). * Changed Canvas code (and similar) to use the above signal, to perform more efficiently. This PR breaks compatibility (although this notification was very rarely used, even within the engine), but provides an alternate way to do the same. It is required for the changes in #75627 to be entirely effective.
This commit is contained in:
@@ -180,25 +180,30 @@ void CanvasLayer::_notification(int p_what) {
|
||||
viewport = vp->get_viewport_rid();
|
||||
|
||||
RenderingServer::get_singleton()->viewport_attach_canvas(viewport, canvas);
|
||||
RenderingServer::get_singleton()->viewport_set_canvas_stacking(viewport, canvas, layer, get_index());
|
||||
RenderingServer::get_singleton()->viewport_set_canvas_transform(viewport, canvas, transform);
|
||||
_update_follow_viewport();
|
||||
|
||||
if (vp) {
|
||||
get_parent()->connect(SNAME("child_order_changed"), callable_mp(vp, &Viewport::canvas_parent_mark_dirty).bind(get_parent()), CONNECT_REFERENCE_COUNTED);
|
||||
vp->canvas_parent_mark_dirty(get_parent());
|
||||
}
|
||||
} break;
|
||||
|
||||
case NOTIFICATION_EXIT_TREE: {
|
||||
ERR_FAIL_NULL_MSG(vp, "Viewport is not initialized.");
|
||||
get_parent()->disconnect(SNAME("child_order_changed"), callable_mp(vp, &Viewport::canvas_parent_mark_dirty).bind(get_parent()));
|
||||
|
||||
vp->_canvas_layer_remove(this);
|
||||
RenderingServer::get_singleton()->viewport_remove_canvas(viewport, canvas);
|
||||
viewport = RID();
|
||||
_update_follow_viewport(false);
|
||||
} break;
|
||||
}
|
||||
}
|
||||
|
||||
case NOTIFICATION_MOVED_IN_PARENT: {
|
||||
if (is_inside_tree()) {
|
||||
RenderingServer::get_singleton()->viewport_set_canvas_stacking(viewport, canvas, layer, get_index());
|
||||
}
|
||||
} break;
|
||||
void CanvasLayer::update_draw_order() {
|
||||
if (is_inside_tree()) {
|
||||
RenderingServer::get_singleton()->viewport_set_canvas_stacking(viewport, canvas, layer, get_index());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user