UPD: onRender() als eigener Pass, closes #3

This commit is contained in:
sebastian 2026-04-17 07:27:40 +02:00
parent 705d311c6d
commit 373fb34ea0
6 changed files with 23 additions and 16 deletions

View File

@ -8,8 +8,6 @@
#include "../layer/Layer.h" #include "../layer/Layer.h"
#include "../platform/glfw/InputManager.h" #include "../platform/glfw/InputManager.h"
#include "inputsOutputs/stateControl/StateRegistry.h" #include "inputsOutputs/stateControl/StateRegistry.h"
#include "inputsOutputs/stateControl/states/EmptyState.h"
#include "inputsOutputs/stateControl/states/State.h"
Application* Application::instance = nullptr; Application* Application::instance = nullptr;
@ -53,9 +51,10 @@ void Application::run() {
window->OnUpdate(); window->OnUpdate();
updateTime(); updateTime();
for (Layer* layer : layers) for (Layer* layer : layers)
{
layer->onUpdate(); layer->onUpdate();
}
for (Layer* layer : layers)
layer->onRender();
InputManager::update(); InputManager::update();

View File

@ -20,6 +20,7 @@ public:
virtual void onAttach() {} virtual void onAttach() {}
virtual void onDetach() {} virtual void onDetach() {}
virtual void onUpdate() {} virtual void onUpdate() {}
virtual void onRender() {}
void setGameMode(std::shared_ptr<GameMode> gameMode) {this->gameMode = std::move(gameMode);} void setGameMode(std::shared_ptr<GameMode> gameMode) {this->gameMode = std::move(gameMode);}
[[nodiscard]] std::shared_ptr<GameMode> getGameMode() const {return gameMode;} [[nodiscard]] std::shared_ptr<GameMode> getGameMode() const {return gameMode;}

View File

@ -132,6 +132,10 @@ void GameLayer::onUpdate()
} }
buildingPlacementSystem->update(*entityManager, *gameMode, 0, *turnState); buildingPlacementSystem->update(*entityManager, *gameMode, 0, *turnState);
CollectResourceSystem::update(*entityManager, *gameMode); CollectResourceSystem::update(*entityManager, *gameMode);
}
void GameLayer::onRender() {
RenderSystem::render(*entityManager, *renderer); RenderSystem::render(*entityManager, *renderer);
renderer->render(*light, *camera); renderer->render(*light, *camera);

View File

@ -27,6 +27,7 @@ public:
void onAttach() override; void onAttach() override;
void onDetach() override; void onDetach() override;
void onUpdate() override; void onUpdate() override;
void onRender() override;
private: private:
TexturedModel texturedModel; TexturedModel texturedModel;
std::unique_ptr<Camera> camera; std::unique_ptr<Camera> camera;

View File

@ -156,18 +156,6 @@ void UILayer::onUpdate() {
rootContainer->update(0.f); //Todo: Determine frame time 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())) { if (rootContainer->isMouseOver(Application::getInstance().mouse->getX(), Application::getInstance().mouse->getY())) {
Application::getInstance().stateManager->suggestState(StateRegistry::get().uiState, false); Application::getInstance().stateManager->suggestState(StateRegistry::get().uiState, false);
} else { } else {
@ -178,3 +166,16 @@ void UILayer::onUpdate() {
void UILayer::onDetach() { void UILayer::onDetach() {
Layer::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);
}

View File

@ -36,6 +36,7 @@ public:
void onAttach() override; void onAttach() override;
void onUpdate() override; void onUpdate() override;
void onDetach() override; void onDetach() override;
void onRender() override;
}; };