From a3a2685b9ab40a10359ff9cb9ea94c6c6f0e323b Mon Sep 17 00:00:00 2001 From: "florent.teppe" Date: Thu, 20 Apr 2023 16:16:17 +0200 Subject: [PATCH] More MWWorld::CellStore* -> MWWorld::CellStore& --- apps/openmw/mwbase/world.hpp | 2 +- apps/openmw/mwgui/mapwindow.cpp | 4 +- apps/openmw/mwworld/scene.cpp | 74 ++++++++++++++++---------------- apps/openmw/mwworld/scene.hpp | 6 +-- apps/openmw/mwworld/worldimp.cpp | 8 ++-- apps/openmw/mwworld/worldimp.hpp | 2 +- 6 files changed, 48 insertions(+), 48 deletions(-) diff --git a/apps/openmw/mwbase/world.hpp b/apps/openmw/mwbase/world.hpp index c33655ee65..7d486b8b2f 100644 --- a/apps/openmw/mwbase/world.hpp +++ b/apps/openmw/mwbase/world.hpp @@ -157,7 +157,7 @@ namespace MWBase virtual bool isCellQuasiExterior() const = 0; - virtual void getDoorMarkers(MWWorld::CellStore* cell, std::vector& out) = 0; + virtual void getDoorMarkers(MWWorld::CellStore& cell, std::vector& out) = 0; ///< get a list of teleport door markers for a given cell, to be displayed on the local map virtual void setGlobalInt(MWWorld::GlobalVariableName name, int value) = 0; diff --git a/apps/openmw/mwgui/mapwindow.cpp b/apps/openmw/mwgui/mapwindow.cpp index d076578090..e6216ca951 100644 --- a/apps/openmw/mwgui/mapwindow.cpp +++ b/apps/openmw/mwgui/mapwindow.cpp @@ -633,7 +633,7 @@ namespace MWGui for (MyGUI::Widget* widget : mExteriorDoorMarkerWidgets) widget->setVisible(false); - MWWorld::CellStore* cell = &worldModel->getInterior(mPrefix); + MWWorld::CellStore& cell = worldModel->getInterior(mPrefix); world->getDoorMarkers(cell, doors); } else @@ -641,7 +641,7 @@ namespace MWGui for (MapEntry& entry : mMaps) { if (!entry.mMapTexture && !widgetCropped(entry.mMapWidget, mLocalMap)) - world->getDoorMarkers(&worldModel->getExterior(entry.mCellX, entry.mCellY), doors); + world->getDoorMarkers(worldModel->getExterior(entry.mCellX, entry.mCellY), doors); } if (doors.empty()) return; diff --git a/apps/openmw/mwworld/scene.cpp b/apps/openmw/mwworld/scene.cpp index 2262a2d9c4..e7bede2bed 100644 --- a/apps/openmw/mwworld/scene.cpp +++ b/apps/openmw/mwworld/scene.cpp @@ -377,19 +377,19 @@ namespace MWWorld mRendering.notifyWorldSpaceChanged(); } - void Scene::loadCell(CellStore* cell, Loading::Listener* loadingListener, bool respawn, const osg::Vec3f& position, + void Scene::loadCell(CellStore& cell, Loading::Listener* loadingListener, bool respawn, const osg::Vec3f& position, const DetourNavigator::UpdateGuard* navigatorUpdateGuard) { using DetourNavigator::HeightfieldShape; - assert(mActiveCells.find(cell) == mActiveCells.end()); - mActiveCells.insert(cell); + assert(mActiveCells.find(&cell) == mActiveCells.end()); + mActiveCells.insert(&cell); - Log(Debug::Info) << "Loading cell " << cell->getCell()->getDescription(); + Log(Debug::Info) << "Loading cell " << cell.getCell()->getDescription(); - const int cellX = cell->getCell()->getGridX(); - const int cellY = cell->getCell()->getGridY(); - const MWWorld::Cell& cellVariant = *cell->getCell(); + const int cellX = cell.getCell()->getGridX(); + const int cellY = cell.getCell()->getGridY(); + const MWWorld::Cell& cellVariant = *cell.getCell(); if (cellVariant.isExterior()) { @@ -440,22 +440,22 @@ namespace MWWorld }, [&](const ESM4::Cell& cell) {}, }, - *cell->getCell()); + *cell.getCell()); // register local scripts // do this before insertCell, to make sure we don't add scripts from levelled creature spawning twice - mWorld.getLocalScripts().addCell(cell); + mWorld.getLocalScripts().addCell(&cell); if (respawn) - cell->respawn(); + cell.respawn(); - insertCell(*cell, loadingListener, navigatorUpdateGuard); + insertCell(cell, loadingListener, navigatorUpdateGuard); - mRendering.addCell(cell); + mRendering.addCell(&cell); - MWBase::Environment::get().getWindowManager()->addCell(cell); - bool waterEnabled = cellVariant.hasWater() || cell->isExterior(); - float waterLevel = cell->getWaterLevel(); + MWBase::Environment::get().getWindowManager()->addCell(&cell); + bool waterEnabled = cellVariant.hasWater() || cell.isExterior(); + float waterLevel = cell.getWaterLevel(); mRendering.setWaterEnabled(waterEnabled); if (waterEnabled) { @@ -477,10 +477,10 @@ namespace MWWorld else mPhysics->disableWater(); - if (!cell->isExterior() && !cellVariant.isQuasiExterior()) + if (!cell.isExterior() && !cellVariant.isQuasiExterior()) mRendering.configureAmbient(cellVariant); - mPreloader->notifyLoaded(cell); + mPreloader->notifyLoaded(&cell); } void Scene::clear() @@ -615,7 +615,7 @@ namespace MWWorld if (!isCellInCollection(x, y, mActiveCells)) { CellStore& cell = mWorld.getWorldModel().getExterior(x, y); - loadCell(&cell, loadingListener, changeEvent, pos, navigatorUpdateGuard.get()); + loadCell(cell, loadingListener, changeEvent, pos, navigatorUpdateGuard.get()); } } @@ -682,7 +682,7 @@ namespace MWWorld const osg::Vec3f position = osg::Vec3f(it->mData.mX + 0.5f, it->mData.mY + 0.5f, 0) * Constants::CellSizeInUnits; mNavigator.updateBounds(position, navigatorUpdateGuard.get()); - loadCell(&cell, nullptr, false, position, navigatorUpdateGuard.get()); + loadCell(cell, nullptr, false, position, navigatorUpdateGuard.get()); mNavigator.update(position, navigatorUpdateGuard.get()); navigatorUpdateGuard.reset(); @@ -740,7 +740,7 @@ namespace MWWorld ESM::Position position; mWorld.findInteriorPosition(it->mName, position); mNavigator.updateBounds(position.asVec3(), navigatorUpdateGuard.get()); - loadCell(&cell, nullptr, false, position.asVec3(), navigatorUpdateGuard.get()); + loadCell(cell, nullptr, false, position.asVec3(), navigatorUpdateGuard.get()); mNavigator.update(position.asVec3(), navigatorUpdateGuard.get()); navigatorUpdateGuard.reset(); @@ -772,21 +772,21 @@ namespace MWWorld mRendering.getResourceSystem()->setExpiryDelay(Settings::Manager::getFloat("cache expiry delay", "Cells")); } - void Scene::changePlayerCell(CellStore* cell, const ESM::Position& pos, bool adjustPlayerPos) + void Scene::changePlayerCell(CellStore& cell, const ESM::Position& pos, bool adjustPlayerPos) { - mCurrentCell = cell; + mCurrentCell = &cell; - mRendering.enableTerrain(cell->isExterior()); + mRendering.enableTerrain(cell.isExterior()); MWWorld::Ptr old = mWorld.getPlayerPtr(); - mWorld.getPlayer().setCell(cell); + mWorld.getPlayer().setCell(&cell); MWWorld::Ptr player = mWorld.getPlayerPtr(); mRendering.updatePlayerPtr(player); // The player is loaded before the scene and by default it is grounded, with the scene fully loaded, // we validate and correct this. Only run once, during initial cell load. - if (old.mCell == cell) + if (old.mCell == &cell) mPhysics->traceDown(player, player.getRefData().getPosition().asVec3(), 10.f); if (adjustPlayerPos) @@ -897,11 +897,11 @@ namespace MWWorld // Load cell. mPagedRefs.clear(); - loadCell(&cell, loadingListener, changeEvent, position.asVec3(), navigatorUpdateGuard.get()); + loadCell(cell, loadingListener, changeEvent, position.asVec3(), navigatorUpdateGuard.get()); navigatorUpdateGuard.reset(); - changePlayerCell(&cell, position, adjustPlayerPos); + changePlayerCell(cell, position, adjustPlayerPos); // adjust fog mRendering.configureFog(*mCurrentCell->getCell()); @@ -934,7 +934,7 @@ namespace MWWorld changeCellGrid(position.asVec3(), cellIndex.x(), cellIndex.y(), changeEvent); - changePlayerCell(¤t, position, adjustPlayerPos); + changePlayerCell(current, position, adjustPlayerPos); if (changeEvent) MWBase::Environment::get().getWindowManager()->fadeScreenIn(0.5); @@ -1133,7 +1133,7 @@ namespace MWWorld { try { - preloadCell(&mWorld.getWorldModel().getCell(door.getCellRef().getDestCell())); + preloadCell(mWorld.getWorldModel().getCell(door.getCellRef().getDestCell())); } catch (std::exception&) { @@ -1177,17 +1177,17 @@ namespace MWWorld + mPreloadDistance; if (dist < loadDist) - preloadCell(&mWorld.getWorldModel().getExterior(cellX + dx, cellY + dy)); + preloadCell(mWorld.getWorldModel().getExterior(cellX + dx, cellY + dy)); } } } - void Scene::preloadCell(CellStore* cell, bool preloadSurrounding) + void Scene::preloadCell(CellStore& cell, bool preloadSurrounding) { - if (preloadSurrounding && cell->isExterior()) + if (preloadSurrounding && cell.isExterior()) { - int x = cell->getCell()->getGridX(); - int y = cell->getCell()->getGridY(); + int x = cell.getCell()->getGridX(); + int y = cell.getCell()->getGridY(); unsigned int numpreloaded = 0; for (int dx = -mHalfGridSize; dx <= mHalfGridSize; ++dx) { @@ -1201,7 +1201,7 @@ namespace MWWorld } } else - mPreloader->preload(cell, mRendering.getReferenceTime()); + mPreloader->preload(&cell, mRendering.getReferenceTime()); } void Scene::preloadTerrain(const osg::Vec3f& pos, bool sync) @@ -1274,12 +1274,12 @@ namespace MWWorld for (ESM::Transport::Dest& dest : listVisitor.mList) { if (!dest.mCellName.empty()) - preloadCell(&mWorld.getWorldModel().getInterior(dest.mCellName)); + preloadCell(mWorld.getWorldModel().getInterior(dest.mCellName)); else { osg::Vec3f pos = dest.mPos.asVec3(); const osg::Vec2i cellIndex = positionToCellIndex(pos.x(), pos.y()); - preloadCell(&mWorld.getWorldModel().getExterior(cellIndex.x(), cellIndex.y()), true); + preloadCell(mWorld.getWorldModel().getExterior(cellIndex.x(), cellIndex.y()), true); exteriorPositions.emplace_back(pos, gridCenterToBounds(getNewGridCenter(pos))); } } diff --git a/apps/openmw/mwworld/scene.hpp b/apps/openmw/mwworld/scene.hpp index 0383d0c888..06b4221332 100644 --- a/apps/openmw/mwworld/scene.hpp +++ b/apps/openmw/mwworld/scene.hpp @@ -134,7 +134,7 @@ namespace MWWorld osg::Vec2i getNewGridCenter(const osg::Vec3f& pos, const osg::Vec2i* currentGridCenter = nullptr) const; void unloadCell(CellStore* cell, const DetourNavigator::UpdateGuard* navigatorUpdateGuard); - void loadCell(CellStore* cell, Loading::Listener* loadingListener, bool respawn, const osg::Vec3f& position, + void loadCell(CellStore& cell, Loading::Listener* loadingListener, bool respawn, const osg::Vec3f& position, const DetourNavigator::UpdateGuard* navigatorUpdateGuard); public: @@ -143,13 +143,13 @@ namespace MWWorld ~Scene(); - void preloadCell(MWWorld::CellStore* cell, bool preloadSurrounding = false); + void preloadCell(MWWorld::CellStore& cell, bool preloadSurrounding = false); void preloadTerrain(const osg::Vec3f& pos, bool sync = false); void reloadTerrain(); void playerMoved(const osg::Vec3f& pos); - void changePlayerCell(CellStore* newCell, const ESM::Position& position, bool adjustPlayerPos); + void changePlayerCell(CellStore& newCell, const ESM::Position& position, bool adjustPlayerPos); CellStore* getCurrentCell(); diff --git a/apps/openmw/mwworld/worldimp.cpp b/apps/openmw/mwworld/worldimp.cpp index 423990befc..250dd97b97 100644 --- a/apps/openmw/mwworld/worldimp.cpp +++ b/apps/openmw/mwworld/worldimp.cpp @@ -507,7 +507,7 @@ namespace MWWorld { if (getPlayerPtr().getCell()->isExterior()) mWorldScene->preloadTerrain(getPlayerPtr().getRefData().getPosition().asVec3()); - mWorldScene->preloadCell(getPlayerPtr().getCell(), true); + mWorldScene->preloadCell(*getPlayerPtr().getCell(), true); } break; default: @@ -1183,7 +1183,7 @@ namespace MWWorld else { if (mWorldScene->isCellActive(*newCell)) - mWorldScene->changePlayerCell(newCell, pos, false); + mWorldScene->changePlayerCell(*newCell, pos, false); else mWorldScene->changeToExteriorCell(newCell->getCell()->getId(), pos, false); } @@ -2086,10 +2086,10 @@ namespace MWWorld } }; - void World::getDoorMarkers(CellStore* cell, std::vector& out) + void World::getDoorMarkers(CellStore& cell, std::vector& out) { GetDoorMarkerVisitor visitor{ out }; - cell->forEachType(visitor); + cell.forEachType(visitor); } void World::setWaterHeight(const float height) diff --git a/apps/openmw/mwworld/worldimp.hpp b/apps/openmw/mwworld/worldimp.hpp index 7b24beb9d6..47ed94bdfa 100644 --- a/apps/openmw/mwworld/worldimp.hpp +++ b/apps/openmw/mwworld/worldimp.hpp @@ -245,7 +245,7 @@ namespace MWWorld bool isCellQuasiExterior() const override; - void getDoorMarkers(MWWorld::CellStore* cell, std::vector& out) override; + void getDoorMarkers(MWWorld::CellStore& cell, std::vector& out) override; ///< get a list of teleport door markers for a given cell, to be displayed on the local map void setGlobalInt(GlobalVariableName name, int value) override;