From 8d879fb5bc15d68712e7744d24e77ba84a16bddb Mon Sep 17 00:00:00 2001 From: Kbz-8 Date: Tue, 5 Nov 2024 11:59:31 +0100 Subject: [PATCH] improving BringToLayer --- runtime/Includes/Graphics/Scene.h | 1 - runtime/Sources/Graphics/Scene.cpp | 16 +++------------- runtime/Sources/Renderer/RenderPasses/2DPass.cpp | 4 ++-- 3 files changed, 5 insertions(+), 16 deletions(-) diff --git a/runtime/Includes/Graphics/Scene.h b/runtime/Includes/Graphics/Scene.h index fdb273b..c4e6d27 100644 --- a/runtime/Includes/Graphics/Scene.h +++ b/runtime/Includes/Graphics/Scene.h @@ -27,7 +27,6 @@ namespace mlx inline void BindFont(std::shared_ptr font) { Verify((bool)font, "invalid fond pointer"); p_bound_font = font; } - void BringToFront(NonOwningPtr drawable); void BringToDrawLayer(NonOwningPtr drawable, std::uint64_t draw_layer); inline void ResetScene(Vec4f clear) { m_drawables.clear(); m_clear_color = std::move(clear); } diff --git a/runtime/Sources/Graphics/Scene.cpp b/runtime/Sources/Graphics/Scene.cpp index 8ed2986..dcc2f61 100644 --- a/runtime/Sources/Graphics/Scene.cpp +++ b/runtime/Sources/Graphics/Scene.cpp @@ -112,27 +112,17 @@ namespace mlx return ptr->GetText() == text && ptr->GetFont() == p_bound_font; } - void Scene::BringToFront(NonOwningPtr drawable) + void Scene::BringToDrawLayer(NonOwningPtr drawable, std::uint64_t draw_layer) { MLX_PROFILE_FUNCTION(); + if(draw_layer < m_drawables.size()) + return; auto it = std::find_if(m_drawables.begin(), m_drawables.end(), [&drawable](std::shared_ptr drawable_ptr) { return drawable_ptr.get() == drawable.Get(); }); if(it == m_drawables.end()) return; - std::rotate(it, it + 1, m_drawables.end()); - } - - void Scene::BringToDrawLayer(NonOwningPtr drawable, std::uint64_t draw_layer) - { - MLX_PROFILE_FUNCTION(); - auto it = std::find_if(m_drawables.begin(), m_drawables.end(), [&drawable](std::shared_ptr drawable_ptr) - { - return drawable_ptr.get() == drawable.Get(); - }); - if (m_drawables.size() > draw_layer) - return; std::swap(*it, *(m_drawables.begin() + draw_layer)); } } diff --git a/runtime/Sources/Renderer/RenderPasses/2DPass.cpp b/runtime/Sources/Renderer/RenderPasses/2DPass.cpp index a3ee4b8..09f4afe 100644 --- a/runtime/Sources/Renderer/RenderPasses/2DPass.cpp +++ b/runtime/Sources/Renderer/RenderPasses/2DPass.cpp @@ -94,7 +94,7 @@ namespace mlx const auto& drawables = scene.GetDrawables(); - for(auto drawable : drawables) + for(auto& drawable : drawables) { // Check every textures and update modified ones to GPU before starting the render pass if(!drawable->IsSetInit()) @@ -103,7 +103,7 @@ namespace mlx } m_pipeline.BindPipeline(cmd, 0, {}); - for(auto drawable : drawables) + for(auto& drawable : drawables) { SpriteData drawable_data; drawable_data.position = drawable->GetPosition();