diff --git a/apps/openmw/mwbase/world.hpp b/apps/openmw/mwbase/world.hpp index 2128974fb2..46642a8d95 100644 --- a/apps/openmw/mwbase/world.hpp +++ b/apps/openmw/mwbase/world.hpp @@ -156,9 +156,6 @@ namespace MWBase virtual bool isCellQuasiExterior() const = 0; - virtual osg::Vec2f getNorthVector(const MWWorld::CellStore* cell) = 0; - ///< get north vector for given interior cell - 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 diff --git a/apps/openmw/mwrender/localmap.cpp b/apps/openmw/mwrender/localmap.cpp index 1da98c483c..f9c7e02e44 100644 --- a/apps/openmw/mwrender/localmap.cpp +++ b/apps/openmw/mwrender/localmap.cpp @@ -281,6 +281,19 @@ namespace MWRender } } + static osg::Vec2f getNorthVector(const MWWorld::CellStore* cell) + { + MWWorld::ConstPtr northmarker = cell->searchConst(ESM::RefId::stringRefId("northmarker")); + + if (northmarker.isEmpty()) + return osg::Vec2f(0, 1); + + osg::Quat orient(-northmarker.getRefData().getPosition().rot[2], osg::Vec3f(0, 0, 1)); + osg::Vec3f dir = orient * osg::Vec3f(0, 1, 0); + osg::Vec2f d(dir.x(), dir.y()); + return d; + } + void LocalMap::requestInteriorMap(const MWWorld::CellStore* cell) { osg::ComputeBoundsVisitor computeBoundsVisitor; @@ -299,7 +312,7 @@ namespace MWRender mBounds = bounds; // Get the cell's NorthMarker rotation. This is used to rotate the entire map. - osg::Vec2f north = MWBase::Environment::get().getWorld()->getNorthVector(cell); + osg::Vec2f north = getNorthVector(cell); mAngle = std::atan2(north.x(), north.y()); diff --git a/apps/openmw/mwworld/worldimp.cpp b/apps/openmw/mwworld/worldimp.cpp index 205e373c33..e666821579 100644 --- a/apps/openmw/mwworld/worldimp.cpp +++ b/apps/openmw/mwworld/worldimp.cpp @@ -2022,19 +2022,6 @@ namespace MWWorld mWeatherManager->modRegion(regionid, chances); } - osg::Vec2f World::getNorthVector(const CellStore* cell) - { - MWWorld::ConstPtr northmarker = cell->searchConst(ESM::RefId::stringRefId("northmarker")); - - if (northmarker.isEmpty()) - return osg::Vec2f(0, 1); - - osg::Quat orient(-northmarker.getRefData().getPosition().rot[2], osg::Vec3f(0, 0, 1)); - osg::Vec3f dir = orient * osg::Vec3f(0, 1, 0); - osg::Vec2f d(dir.x(), dir.y()); - return d; - } - struct GetDoorMarkerVisitor { std::vector& mOut; diff --git a/apps/openmw/mwworld/worldimp.hpp b/apps/openmw/mwworld/worldimp.hpp index 216fe4c837..1aaefe20c7 100644 --- a/apps/openmw/mwworld/worldimp.hpp +++ b/apps/openmw/mwworld/worldimp.hpp @@ -246,9 +246,6 @@ namespace MWWorld bool isCellQuasiExterior() const override; - osg::Vec2f getNorthVector(const CellStore* cell) override; - ///< get north vector for given interior cell - 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