// // Created by sebastian on 09.02.26. // #include "UILayer.h" #include "../engine/core/gui/text/Font.h" #include "../engine/core/gui/uiComponent/UiImage.h" #include "../engine/core/gui/uiComponent/UiText.h" #include "../engine/renderer/loader/Loader.h" #include "../engine/renderer/model/GUITexture.h" UILayer::UILayer() { Loader& loader = Loader::instance(); guiRenderer = std::make_unique(loader); textRenderer = std::make_unique(); } void UILayer::onAttach() { Layer::onAttach(); rootContainer = std::make_unique(); auto image = std::make_unique( Loader::instance().loadTextureFromFile("assets/textures/texture.png").getTextureID(), glm::vec2(0.5f, 0.5f), glm::vec2(0.5f) ); rootContainer->addChild(std::move(image)); Font myFont("/usr/share/fonts/TTF/DejaVuSans.ttf", 48); font = std::make_unique(myFont); auto text = std::make_unique(*font, "Hello World!", glm::vec2(0.5f, 0.5f), glm::vec2(0.3f, 0.1f)); rootContainer->addChild(std::move(text)); } void UILayer::onUpdate() { Layer::onUpdate(); UiRenderBundle renderBundle; if (rootContainer) { rootContainer->collectRenderData(renderBundle); } auto guis = renderBundle.getGUITextures(); guiRenderer->render(guis); auto texts = renderBundle.getTexts(); textRenderer->renderTexts(texts); } void UILayer::onDetach() { Layer::onDetach(); }