mirror of
https://github.com/seekrs/MacroLibX.git
synced 2026-01-11 22:53:34 +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; }
|
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);
|
void BringToDrawLayer(NonOwningPtr<Drawable> drawable, std::uint64_t draw_layer);
|
||||||
|
|
||||||
inline void ResetScene(Vec4f clear) { m_drawables.clear(); m_clear_color = std::move(clear); }
|
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;
|
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();
|
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)
|
auto it = std::find_if(m_drawables.begin(), m_drawables.end(), [&drawable](std::shared_ptr<Drawable> drawable_ptr)
|
||||||
{
|
{
|
||||||
return drawable_ptr.get() == drawable.Get();
|
return drawable_ptr.get() == drawable.Get();
|
||||||
});
|
});
|
||||||
if(it == m_drawables.end())
|
if(it == m_drawables.end())
|
||||||
return;
|
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));
|
std::swap(*it, *(m_drawables.begin() + draw_layer));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ namespace mlx
|
|||||||
|
|
||||||
const auto& drawables = scene.GetDrawables();
|
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
|
// Check every textures and update modified ones to GPU before starting the render pass
|
||||||
if(!drawable->IsSetInit())
|
if(!drawable->IsSetInit())
|
||||||
@@ -103,7 +103,7 @@ namespace mlx
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_pipeline.BindPipeline(cmd, 0, {});
|
m_pipeline.BindPipeline(cmd, 0, {});
|
||||||
for(auto drawable : drawables)
|
for(auto& drawable : drawables)
|
||||||
{
|
{
|
||||||
SpriteData drawable_data;
|
SpriteData drawable_data;
|
||||||
drawable_data.position = drawable->GetPosition();
|
drawable_data.position = drawable->GetPosition();
|
||||||
|
|||||||
Reference in New Issue
Block a user