diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2018-11-01 19:31:09 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-01 19:31:09 +0100 |
commit | b573bf85474c0aace64d52266ae60fa26fbbf26d (patch) | |
tree | 3847ddbd68502becfb083b670aa3d6cf93ed6fa7 /scene | |
parent | 8ac1bcfd3d9bd3a5ab89916f21d77c21499c7249 (diff) | |
parent | cf8976de415573ed170c60fafa997725916bff55 (diff) |
Merge pull request #23411 from RandomShaper/fix-same-layer-not-deterministic
Fix canvas stacking not deterministic on same layer
Diffstat (limited to 'scene')
-rw-r--r-- | scene/main/canvas_layer.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/scene/main/canvas_layer.cpp b/scene/main/canvas_layer.cpp index a2e890e7a7..0f5fd99281 100644 --- a/scene/main/canvas_layer.cpp +++ b/scene/main/canvas_layer.cpp @@ -35,7 +35,7 @@ void CanvasLayer::set_layer(int p_xform) { layer = p_xform; if (viewport.is_valid()) - VisualServer::get_singleton()->viewport_set_canvas_layer(viewport, canvas, layer); + VisualServer::get_singleton()->viewport_set_canvas_stacking(viewport, canvas, layer, get_position_in_parent()); } int CanvasLayer::get_layer() const { @@ -149,7 +149,7 @@ void CanvasLayer::_notification(int p_what) { viewport = vp->get_viewport_rid(); VisualServer::get_singleton()->viewport_attach_canvas(viewport, canvas); - VisualServer::get_singleton()->viewport_set_canvas_layer(viewport, canvas, layer); + VisualServer::get_singleton()->viewport_set_canvas_stacking(viewport, canvas, layer, get_position_in_parent()); VisualServer::get_singleton()->viewport_set_canvas_transform(viewport, canvas, transform); } break; @@ -159,6 +159,10 @@ void CanvasLayer::_notification(int p_what) { viewport = RID(); } break; + case NOTIFICATION_MOVED_IN_PARENT: { + + VisualServer::get_singleton()->viewport_set_canvas_stacking(viewport, canvas, layer, get_position_in_parent()); + } break; } } @@ -201,7 +205,7 @@ void CanvasLayer::set_custom_viewport(Node *p_viewport) { viewport = vp->get_viewport_rid(); VisualServer::get_singleton()->viewport_attach_canvas(viewport, canvas); - VisualServer::get_singleton()->viewport_set_canvas_layer(viewport, canvas, layer); + VisualServer::get_singleton()->viewport_set_canvas_stacking(viewport, canvas, layer, get_position_in_parent()); VisualServer::get_singleton()->viewport_set_canvas_transform(viewport, canvas, transform); } } |