forked from teamnwah/openmw-tes3coop
Hide the terrain in non-exterior cells
This commit is contained in:
parent
2580de11a4
commit
4dbd224249
6 changed files with 21 additions and 0 deletions
|
@ -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…
Reference in a new issue