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();