From 89b8ffa013c10db57be14fbdd59757c08c243e18 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Mon, 23 Feb 2026 17:35:48 +0000 Subject: Tidy the preFrame logic into a single function in SceneRenderer Clients now just call that one helper and SceneProvider passes in all the renderables. --- ui/gameMainWindow.cpp | 13 +++++++++---- ui/gameMainWindow.h | 1 + 2 files changed, 10 insertions(+), 4 deletions(-) (limited to 'ui') diff --git a/ui/gameMainWindow.cpp b/ui/gameMainWindow.cpp index 9f224a2..056dac3 100644 --- a/ui/gameMainWindow.cpp +++ b/ui/gameMainWindow.cpp @@ -83,15 +83,20 @@ GameMainWindow::handleInput(const SDL_Event & event) } void -GameMainWindow::render() +GameMainWindow::forEachRenderable(const RenderableProcessor & func) const { - const auto & [camFrust, lightFrust] = SceneRenderer::preFrame(gameState->environment->getSunPos()); for (const auto & [assetId, asset] : gameState->assets) { if (const auto renderable = asset.getAs()) { - renderable->preFrame(camFrust, lightFrust); + func(renderable); } } - gameState->world.apply(&Renderable::preFrame, camFrust, lightFrust); + gameState->world.apply(func); +} + +void +GameMainWindow::render() +{ + SceneRenderer::preFrame(*this, gameState->environment->getSunPos()); SceneRenderer::render(*this); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); diff --git a/ui/gameMainWindow.h b/ui/gameMainWindow.h index 71b6314..015bb2b 100644 --- a/ui/gameMainWindow.h +++ b/ui/gameMainWindow.h @@ -14,6 +14,7 @@ public: private: bool handleInput(const SDL_Event &) override; + void forEachRenderable(const RenderableProcessor & func) const override; void content(const SceneShader &, const Frustum &) const override; void environment(const SceneShader &, const SceneRenderer &) const override; void lights(const SceneShader &) const override; -- cgit v1.3