summaryrefslogtreecommitdiff
path: root/ui/gameMainWindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ui/gameMainWindow.cpp')
-rw-r--r--ui/gameMainWindow.cpp39
1 files changed, 29 insertions, 10 deletions
diff --git a/ui/gameMainWindow.cpp b/ui/gameMainWindow.cpp
index f63137c..f8c568b 100644
--- a/ui/gameMainWindow.cpp
+++ b/ui/gameMainWindow.cpp
@@ -32,7 +32,7 @@ GameMainWindow::GameMainWindow(size_t w, size_t h) : WindowContent {w, h}, Scene
{
uiComponents.create<ManualCameraController>(glm::vec2 {310'727'624, 494'018'810});
auto gms = uiComponents.create<GameMainSelector>(&camera, ScreenAbsCoord {w, h});
- uiComponents.create<GameMainToolbar>(gms.get());
+ uiComponents.create<GameMainToolbar>(gms);
}
GameMainWindow::~GameMainWindow() { }
@@ -43,6 +43,25 @@ GameMainWindow::tick(TickDuration)
uiComponents.apply<CameraController>(&CameraController::updateCamera, &camera);
}
+bool
+GameMainWindow::handleInput(const SDL_Event & event)
+{
+ switch (event.type) {
+ case SDL_WINDOWEVENT:
+ switch (event.window.event) {
+ case SDL_WINDOWEVENT_RESIZED:
+ SceneRenderer::resize({event.window.data1, event.window.data2});
+ break;
+ default:
+ break;
+ }
+ default:
+ break;
+ }
+
+ return WindowContent::handleInput(event);
+}
+
void
GameMainWindow::render() const
{
@@ -56,12 +75,12 @@ GameMainWindow::render() const
void
GameMainWindow::content(const SceneShader & shader, const Frustum & frustum) const
{
- for (const auto & [id, asset] : gameState->assets) {
- if (const auto r = std::dynamic_pointer_cast<const Renderable>(asset)) {
- r->render(shader, frustum);
+ for (const auto & [assetId, asset] : gameState->assets) {
+ if (const auto renderable = asset.getAs<const Renderable>()) {
+ renderable->render(shader, frustum);
}
}
- gameState->world.apply<Renderable>(&Renderable::render, shader, frustum);
+ gameState->world.apply<const Renderable>(&Renderable::render, shader, frustum);
uiComponents.apply<WorldOverlay>(&WorldOverlay::render, shader, frustum);
}
@@ -74,16 +93,16 @@ GameMainWindow::environment(const SceneShader &, const SceneRenderer & r) const
void
GameMainWindow::lights(const SceneShader & shader) const
{
- gameState->world.apply<Renderable>(&Renderable::lights, shader);
+ gameState->world.apply<const Renderable>(&Renderable::lights, shader);
}
void
GameMainWindow::shadows(const ShadowMapper & shadowMapper, const Frustum & frustum) const
{
- for (const auto & [id, asset] : gameState->assets) {
- if (const auto r = std::dynamic_pointer_cast<const Renderable>(asset)) {
- r->shadows(shadowMapper, frustum);
+ for (const auto & [assetId, asset] : gameState->assets) {
+ if (const auto renderable = asset.getAs<const Renderable>()) {
+ renderable->shadows(shadowMapper, frustum);
}
}
- gameState->world.apply<Renderable>(&Renderable::shadows, shadowMapper, frustum);
+ gameState->world.apply<const Renderable>(&Renderable::shadows, shadowMapper, frustum);
}