diff --git a/src/renderer/texts/text.cpp b/src/renderer/texts/text.cpp index f08eea9..dbbd264 100644 --- a/src/renderer/texts/text.cpp +++ b/src/renderer/texts/text.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/11 00:11:56 by maldavid #+# #+# */ -/* Updated: 2024/01/18 13:56:50 by maldavid ### ########.fr */ +/* Updated: 2024/02/25 09:01:46 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,6 +19,8 @@ namespace mlx void Text::init(std::string text, FontID font, std::vector vbo_data, std::vector ibo_data) { MLX_PROFILE_FUNCTION(); + if(_is_init) + return; _text = std::move(text); _font = font; #ifdef DEBUG @@ -36,11 +38,14 @@ namespace mlx _vbo[i].create(sizeof(Vertex) * vbo_data.size(), static_cast(vbo_data.data()), nullptr); _ibo.create(sizeof(std::uint16_t) * ibo_data.size(), ibo_data.data(), nullptr); #endif + _is_init = true; } void Text::bind(Renderer& renderer) noexcept { MLX_PROFILE_FUNCTION(); + if(!_is_init) + return; _vbo[renderer.getActiveImageIndex()].bind(renderer); _ibo.bind(renderer); } @@ -48,14 +53,24 @@ namespace mlx void Text::updateVertexData(int frame, std::vector vbo_data) { MLX_PROFILE_FUNCTION(); + if(!_is_init) + return; _vbo[frame].setData(sizeof(Vertex) * vbo_data.size(), static_cast(vbo_data.data())); } void Text::destroy() noexcept { MLX_PROFILE_FUNCTION(); + if(!_is_init) + return; for(int i = 0; i < MAX_FRAMES_IN_FLIGHT; i++) _vbo[i].destroy(); _ibo.destroy(); + _is_init = false; + } + + Text::~Text() + { + destroy(); } } diff --git a/src/renderer/texts/text.h b/src/renderer/texts/text.h index 8abaedc..88c588f 100644 --- a/src/renderer/texts/text.h +++ b/src/renderer/texts/text.h @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/01/11 00:09:04 by maldavid #+# #+# */ -/* Updated: 2024/01/18 09:37:42 by maldavid ### ########.fr */ +/* Updated: 2024/02/25 09:00:26 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -35,13 +35,14 @@ namespace mlx inline const std::string& getText() const { return _text; } void destroy() noexcept; - ~Text() = default; + ~Text(); private: std::array _vbo; C_IBO _ibo; std::string _text; FontID _font = nullfont; + bool _is_init = false; }; } diff --git a/src/renderer/texts/text_manager.cpp b/src/renderer/texts/text_manager.cpp index 3588c78..2a08340 100644 --- a/src/renderer/texts/text_manager.cpp +++ b/src/renderer/texts/text_manager.cpp @@ -6,7 +6,7 @@ /* By: maldavid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/04/06 16:41:13 by maldavid #+# #+# */ -/* Updated: 2024/02/24 21:39:12 by maldavid ### ########.fr */ +/* Updated: 2024/02/25 08:17:09 by maldavid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -53,7 +53,6 @@ namespace mlx if(_font_in_use != text_ptr->getFontInUse()) { // TODO : update text vertex buffers rather than destroying it and recreating it - std::cout << "test" << std::endl; TextLibrary::get().removeTextFromLibrary(res.first->id); const_cast(*res.first).init(_font_in_use); }