summaryrefslogtreecommitdiff
path: root/ui
diff options
context:
space:
mode:
authorDan Goodliffe <dan.goodliffe@octal.co.uk>2026-02-23 17:35:48 +0000
committerDan Goodliffe <dan.goodliffe@octal.co.uk>2026-02-23 17:35:48 +0000
commit89b8ffa013c10db57be14fbdd59757c08c243e18 (patch)
treee753cc920e37e72bec6a7ae391edcf25940f2db3 /ui
parentSimplified Frustum (diff)
downloadilt-89b8ffa013c10db57be14fbdd59757c08c243e18.tar.bz2
ilt-89b8ffa013c10db57be14fbdd59757c08c243e18.tar.xz
ilt-89b8ffa013c10db57be14fbdd59757c08c243e18.zip
Tidy the preFrame logic into a single function in SceneRenderer
Clients now just call that one helper and SceneProvider passes in all the renderables.
Diffstat (limited to 'ui')
-rw-r--r--ui/gameMainWindow.cpp13
-rw-r--r--ui/gameMainWindow.h1
2 files changed, 10 insertions, 4 deletions
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>()) {
- renderable->preFrame(camFrust, lightFrust);
+ func(renderable);
}
}
- gameState->world.apply<const Renderable>(&Renderable::preFrame, camFrust, lightFrust);
+ gameState->world.apply<Renderable>(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;