diff --git a/src/engine/core/Application.cpp b/src/engine/core/Application.cpp index d74e335..2981f32 100644 --- a/src/engine/core/Application.cpp +++ b/src/engine/core/Application.cpp @@ -8,8 +8,6 @@ #include "../layer/Layer.h" #include "../platform/glfw/InputManager.h" #include "inputsOutputs/stateControl/StateRegistry.h" -#include "inputsOutputs/stateControl/states/EmptyState.h" -#include "inputsOutputs/stateControl/states/State.h" Application* Application::instance = nullptr; @@ -53,9 +51,10 @@ void Application::run() { window->OnUpdate(); updateTime(); for (Layer* layer : layers) - { layer->onUpdate(); - } + + for (Layer* layer : layers) + layer->onRender(); InputManager::update(); diff --git a/src/engine/layer/Layer.h b/src/engine/layer/Layer.h index e1d7519..abe8df6 100644 --- a/src/engine/layer/Layer.h +++ b/src/engine/layer/Layer.h @@ -20,6 +20,7 @@ public: virtual void onAttach() {} virtual void onDetach() {} virtual void onUpdate() {} + virtual void onRender() {} void setGameMode(std::shared_ptr gameMode) {this->gameMode = std::move(gameMode);} [[nodiscard]] std::shared_ptr getGameMode() const {return gameMode;} diff --git a/src/game/GameLayer.cpp b/src/game/GameLayer.cpp index 741efc0..a78380e 100644 --- a/src/game/GameLayer.cpp +++ b/src/game/GameLayer.cpp @@ -132,6 +132,10 @@ void GameLayer::onUpdate() } buildingPlacementSystem->update(*entityManager, *gameMode, 0, *turnState); CollectResourceSystem::update(*entityManager, *gameMode); + +} + +void GameLayer::onRender() { RenderSystem::render(*entityManager, *renderer); renderer->render(*light, *camera); diff --git a/src/game/GameLayer.h b/src/game/GameLayer.h index 54e0987..f7e363c 100644 --- a/src/game/GameLayer.h +++ b/src/game/GameLayer.h @@ -27,6 +27,7 @@ public: void onAttach() override; void onDetach() override; void onUpdate() override; + void onRender() override; private: TexturedModel texturedModel; std::unique_ptr camera; diff --git a/src/game/UILayer.cpp b/src/game/UILayer.cpp index 29a14a3..e0b6076 100644 --- a/src/game/UILayer.cpp +++ b/src/game/UILayer.cpp @@ -156,18 +156,6 @@ void UILayer::onUpdate() { rootContainer->update(0.f); //Todo: Determine frame time } - - UiRenderBundle renderBundle; - if (rootContainer) { - rootContainer->collectRenderData(renderBundle); - } - - auto guis = renderBundle.getGUITextures(); - guiRenderer->render(guis); - - auto renderTexts = renderBundle.getGUITexts(); - textRenderer->renderGuiTexts(renderTexts); - if (rootContainer->isMouseOver(Application::getInstance().mouse->getX(), Application::getInstance().mouse->getY())) { Application::getInstance().stateManager->suggestState(StateRegistry::get().uiState, false); } else { @@ -178,3 +166,16 @@ void UILayer::onUpdate() { void UILayer::onDetach() { Layer::onDetach(); } + +void UILayer::onRender() { + UiRenderBundle renderBundle; + if (rootContainer) { + rootContainer->collectRenderData(renderBundle); + } + + auto guis = renderBundle.getGUITextures(); + guiRenderer->render(guis); + + auto renderTexts = renderBundle.getGUITexts(); + textRenderer->renderGuiTexts(renderTexts); +} diff --git a/src/game/UILayer.h b/src/game/UILayer.h index 9dd8f16..7d16613 100644 --- a/src/game/UILayer.h +++ b/src/game/UILayer.h @@ -36,6 +36,7 @@ public: void onAttach() override; void onUpdate() override; void onDetach() override; + void onRender() override; };