mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-08-03 23:36:59 -04:00
Hide the terrain in non-exterior cells
This commit is contained in:
parent
2580de11a4
commit
4dbd224249
@ -421,6 +421,11 @@ namespace MWRender
|
|||||||
mWater->removeCell(store);
|
mWater->removeCell(store);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RenderingManager::enableTerrain(bool enable)
|
||||||
|
{
|
||||||
|
mTerrain->enable(enable);
|
||||||
|
}
|
||||||
|
|
||||||
void RenderingManager::setSkyEnabled(bool enabled)
|
void RenderingManager::setSkyEnabled(bool enabled)
|
||||||
{
|
{
|
||||||
mSky->setEnabled(enabled);
|
mSky->setEnabled(enabled);
|
||||||
|
@ -102,6 +102,8 @@ namespace MWRender
|
|||||||
void addCell(const MWWorld::CellStore* store);
|
void addCell(const MWWorld::CellStore* store);
|
||||||
void removeCell(const MWWorld::CellStore* store);
|
void removeCell(const MWWorld::CellStore* store);
|
||||||
|
|
||||||
|
void enableTerrain(bool enable);
|
||||||
|
|
||||||
void updatePtr(const MWWorld::Ptr& old, const MWWorld::Ptr& updated);
|
void updatePtr(const MWWorld::Ptr& old, const MWWorld::Ptr& updated);
|
||||||
|
|
||||||
void rotateObject(const MWWorld::Ptr& ptr, const osg::Quat& rot);
|
void rotateObject(const MWWorld::Ptr& ptr, const osg::Quat& rot);
|
||||||
|
@ -440,6 +440,8 @@ namespace MWWorld
|
|||||||
{
|
{
|
||||||
mCurrentCell = cell;
|
mCurrentCell = cell;
|
||||||
|
|
||||||
|
mRendering.enableTerrain(cell->isExterior());
|
||||||
|
|
||||||
MWBase::World *world = MWBase::Environment::get().getWorld();
|
MWBase::World *world = MWBase::Environment::get().getWorld();
|
||||||
MWWorld::Ptr old = world->getPlayerPtr();
|
MWWorld::Ptr old = world->getPlayerPtr();
|
||||||
world->getPlayer().setCell(cell);
|
world->getPlayer().setCell(cell);
|
||||||
|
@ -98,6 +98,8 @@ public:
|
|||||||
|
|
||||||
virtual void accept(osg::NodeVisitor &nv)
|
virtual void accept(osg::NodeVisitor &nv)
|
||||||
{
|
{
|
||||||
|
if (!nv.validNodeMask(*this))
|
||||||
|
return;
|
||||||
nv.pushOntoNodePath(this);
|
nv.pushOntoNodePath(this);
|
||||||
mWorld->accept(nv);
|
mWorld->accept(nv);
|
||||||
nv.popFromNodePath();
|
nv.popFromNodePath();
|
||||||
@ -361,6 +363,12 @@ osg::ref_ptr<osg::Node> QuadTreeWorld::cacheCell(int x, int y)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QuadTreeWorld::enable(bool enabled)
|
||||||
|
{
|
||||||
|
if (mRootNode)
|
||||||
|
mRootNode->setNodeMask(enabled ? ~0 : 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,8 @@ namespace Terrain
|
|||||||
virtual void loadCell(int x, int y);
|
virtual void loadCell(int x, int y);
|
||||||
virtual osg::ref_ptr<osg::Node> cacheCell(int x, int y);
|
virtual osg::ref_ptr<osg::Node> cacheCell(int x, int y);
|
||||||
|
|
||||||
|
virtual void enable(bool enabled);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
osg::ref_ptr<RootNode> mRootNode;
|
osg::ref_ptr<RootNode> mRootNode;
|
||||||
|
|
||||||
|
@ -64,6 +64,8 @@ namespace Terrain
|
|||||||
/// @note May be ignored by derived implementations that don't organize the terrain into cells.
|
/// @note May be ignored by derived implementations that don't organize the terrain into cells.
|
||||||
virtual void unloadCell(int x, int y) {}
|
virtual void unloadCell(int x, int y) {}
|
||||||
|
|
||||||
|
virtual void enable(bool enabled) {}
|
||||||
|
|
||||||
Storage* getStorage() { return mStorage; }
|
Storage* getStorage() { return mStorage; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user