From e09cf6ac61dfd985cf80b67a5931ed32c04877e8 Mon Sep 17 00:00:00 2001 From: "florent.teppe" Date: Sun, 14 May 2023 22:00:13 +0200 Subject: [PATCH] enable terrain takes a worldspace as input enable terrain anslo switches the worldspace. --- apps/openmw/mwrender/renderingmanager.cpp | 4 +++- apps/openmw/mwrender/renderingmanager.hpp | 2 +- apps/openmw/mwworld/scene.cpp | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index fb8f30294b..2cfa5291af 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -762,10 +762,12 @@ namespace MWRender mWater->removeCell(store); } - void RenderingManager::enableTerrain(bool enable) + void RenderingManager::enableTerrain(bool enable, ESM::RefId worldspace) { if (!enable) mWater->setCullCallback(nullptr); + else + mTerrain = getWorldspaceTerrain(worldspace); mTerrain->enable(enable); } diff --git a/apps/openmw/mwrender/renderingmanager.hpp b/apps/openmw/mwrender/renderingmanager.hpp index 8aed274468..02824fe34d 100644 --- a/apps/openmw/mwrender/renderingmanager.hpp +++ b/apps/openmw/mwrender/renderingmanager.hpp @@ -150,7 +150,7 @@ namespace MWRender void addCell(const MWWorld::CellStore* store); void removeCell(const MWWorld::CellStore* store); - void enableTerrain(bool enable); + void enableTerrain(bool enable, ESM::RefId worldspace); void updatePtr(const MWWorld::Ptr& old, const MWWorld::Ptr& updated); diff --git a/apps/openmw/mwworld/scene.cpp b/apps/openmw/mwworld/scene.cpp index 5112fad252..f08b4d2a97 100644 --- a/apps/openmw/mwworld/scene.cpp +++ b/apps/openmw/mwworld/scene.cpp @@ -784,7 +784,7 @@ namespace MWWorld mHalfGridSize = cell.getCell()->isEsm4() ? Constants::ESM4CellGridRadius : Constants::CellGridRadius; mCurrentCell = &cell; - mRendering.enableTerrain(cell.isExterior()); + mRendering.enableTerrain(cell.isExterior(), cell.getCell()->getWorldSpace()); MWWorld::Ptr old = mWorld.getPlayerPtr(); mWorld.getPlayer().setCell(&cell);