mirror of
https://github.com/seekrs/MacroLibX.git
synced 2026-01-11 06:33:35 +00:00
improving BringToLayer
This commit is contained in:
@@ -27,7 +27,6 @@ namespace mlx
|
||||
|
||||
inline void BindFont(std::shared_ptr<Font> font) { Verify((bool)font, "invalid fond pointer"); p_bound_font = font; }
|
||||
|
||||
void BringToFront(NonOwningPtr<Drawable> drawable);
|
||||
void BringToDrawLayer(NonOwningPtr<Drawable> drawable, std::uint64_t draw_layer);
|
||||
|
||||
inline void ResetScene(Vec4f clear) { m_drawables.clear(); m_clear_color = std::move(clear); }
|
||||
|
||||
@@ -112,27 +112,17 @@ namespace mlx
|
||||
return ptr->GetText() == text && ptr->GetFont() == p_bound_font;
|
||||
}
|
||||
|
||||
void Scene::BringToFront(NonOwningPtr<Drawable> drawable)
|
||||
void Scene::BringToDrawLayer(NonOwningPtr<Drawable> 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> 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> 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> drawable_ptr)
|
||||
{
|
||||
return drawable_ptr.get() == drawable.Get();
|
||||
});
|
||||
if (m_drawables.size() > draw_layer)
|
||||
return;
|
||||
std::swap(*it, *(m_drawables.begin() + draw_layer));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user