diff options
| -rw-r--r-- | application/resviewer.cpp | 1 | ||||
| -rw-r--r-- | assetFactory/asset.h | 2 | ||||
| -rw-r--r-- | gfx/renderable.cpp | 5 | ||||
| -rw-r--r-- | gfx/renderable.h | 1 | ||||
| -rw-r--r-- | ui/gameMainWindow.cpp | 6 |
5 files changed, 14 insertions, 1 deletions
diff --git a/application/resviewer.cpp b/application/resviewer.cpp index c82017b..e0c36f6 100644 --- a/application/resviewer.cpp +++ b/application/resviewer.cpp @@ -141,6 +141,7 @@ private: selectedAssetId = asset.first; selectedAsset = renderable; location = asset.second->createAt(position); + renderable->preFrame(camera); } } } diff --git a/assetFactory/asset.h b/assetFactory/asset.h index 061a7c8..d8b42f6 100644 --- a/assetFactory/asset.h +++ b/assetFactory/asset.h @@ -12,7 +12,7 @@ class Location; class Asset : public Persistence::Persistable, public StdTypeDefs<Asset> { public: - using ManyPtr = ManySharedPtr<Asset, const Renderable>; + using ManyPtr = ManySharedPtr<Asset, Renderable>; using TexturePtr = std::shared_ptr<TextureAtlas>; /// Used only for the asset viewer diff --git a/gfx/renderable.cpp b/gfx/renderable.cpp index 27f2459..7df5851 100644 --- a/gfx/renderable.cpp +++ b/gfx/renderable.cpp @@ -1,6 +1,11 @@ #include "renderable.h" void +Renderable::preFrame(const Frustum &) +{ +} + +void Renderable::lights(const SceneShader &) const { } diff --git a/gfx/renderable.h b/gfx/renderable.h index 140c570..d7f593a 100644 --- a/gfx/renderable.h +++ b/gfx/renderable.h @@ -13,6 +13,7 @@ public: virtual ~Renderable() = default; DEFAULT_MOVE_COPY(Renderable); + virtual void preFrame(const Frustum &); virtual void render(const SceneShader & shader, const Frustum &) const = 0; virtual void lights(const SceneShader & shader) const; virtual void shadows(const ShadowMapper & shadowMapper, const Frustum &) const; diff --git a/ui/gameMainWindow.cpp b/ui/gameMainWindow.cpp index dbbf8a7..eec5512 100644 --- a/ui/gameMainWindow.cpp +++ b/ui/gameMainWindow.cpp @@ -85,6 +85,12 @@ GameMainWindow::handleInput(const SDL_Event & event) void GameMainWindow::render() { + for (const auto & [assetId, asset] : gameState->assets) { + if (const auto renderable = asset.getAs<Renderable>()) { + renderable->preFrame(camera); + } + } + gameState->world.apply<const Renderable>(&Renderable::preFrame, camera); SceneRenderer::render(*this); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); |
