mirror of
https://github.com/seekrs/MacroLibX.git
synced 2026-01-11 06:33:35 +00:00
add: bring textures to draw layer
Adding the Scene::BringToDrawLayer() to fix layering issues after a Scene::ResetScene() call
This commit is contained in:
@@ -45,14 +45,14 @@ namespace mlx
|
||||
new_text.SetColor(std::move(vec_color));
|
||||
// if(m_pixelput_called)
|
||||
{
|
||||
m_draw_layer++;
|
||||
// m_draw_layer++;
|
||||
// m_pixelput_called = false;
|
||||
}
|
||||
}
|
||||
else if(!p_scene->IsTextAtGivenDrawLayer(str, m_draw_layer))
|
||||
{
|
||||
p_scene->BringToFront(text.Get());
|
||||
m_draw_layer++;
|
||||
p_scene->BringToDrawLayer(text.Get(), m_draw_layer);
|
||||
//m_draw_layer++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,8 +73,8 @@ namespace mlx
|
||||
}
|
||||
else if(!p_scene->IsTextureAtGivenDrawLayer(texture, m_draw_layer))
|
||||
{
|
||||
p_scene->BringToFront(sprite.Get());
|
||||
m_draw_layer++;
|
||||
p_scene->BringToDrawLayer(sprite.Get(), m_draw_layer);
|
||||
//m_draw_layer++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@ 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() { m_drawables.clear(); }
|
||||
|
||||
|
||||
@@ -124,4 +124,15 @@ namespace mlx
|
||||
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));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user