mirror of
https://github.com/OpenMW/openmw.git
synced 2025-04-02 22:06:40 +00:00
Merge branch '2' into 'master'
stop making new reflacttetures at intext change See merge request OpenMW/openmw!116
This commit is contained in:
commit
e0fb411fc8
1 changed files with 15 additions and 10 deletions
|
@ -336,14 +336,7 @@ public:
|
||||||
setName("ReflectionCamera");
|
setName("ReflectionCamera");
|
||||||
setCullCallback(new InheritViewPointCallback);
|
setCullCallback(new InheritViewPointCallback);
|
||||||
|
|
||||||
int reflectionDetail = Settings::Manager::getInt("reflection detail", "Water");
|
setInterior(isInterior);
|
||||||
reflectionDetail = std::min(4, std::max(isInterior ? 2 : 0, reflectionDetail));
|
|
||||||
unsigned int extraMask = 0;
|
|
||||||
if(reflectionDetail >= 1) extraMask |= Mask_Terrain;
|
|
||||||
if(reflectionDetail >= 2) extraMask |= Mask_Static;
|
|
||||||
if(reflectionDetail >= 3) extraMask |= Mask_Effect|Mask_ParticleSystem|Mask_Object;
|
|
||||||
if(reflectionDetail >= 4) extraMask |= Mask_Player|Mask_Actor;
|
|
||||||
setCullMask(Mask_Scene|Mask_Sky|Mask_Lighting|extraMask);
|
|
||||||
setNodeMask(Mask_RenderToTexture);
|
setNodeMask(Mask_RenderToTexture);
|
||||||
|
|
||||||
unsigned int rttSize = Settings::Manager::getInt("rtt size", "Water");
|
unsigned int rttSize = Settings::Manager::getInt("rtt size", "Water");
|
||||||
|
@ -374,6 +367,18 @@ public:
|
||||||
SceneUtil::ShadowManager::disableShadowsForStateSet(getOrCreateStateSet());
|
SceneUtil::ShadowManager::disableShadowsForStateSet(getOrCreateStateSet());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setInterior(bool isInterior)
|
||||||
|
{
|
||||||
|
int reflectionDetail = Settings::Manager::getInt("reflection detail", "Water");
|
||||||
|
reflectionDetail = std::min(4, std::max(isInterior ? 2 : 0, reflectionDetail));
|
||||||
|
unsigned int extraMask = 0;
|
||||||
|
if(reflectionDetail >= 1) extraMask |= Mask_Terrain;
|
||||||
|
if(reflectionDetail >= 2) extraMask |= Mask_Static;
|
||||||
|
if(reflectionDetail >= 3) extraMask |= Mask_Effect|Mask_ParticleSystem|Mask_Object;
|
||||||
|
if(reflectionDetail >= 4) extraMask |= Mask_Player|Mask_Actor;
|
||||||
|
setCullMask(Mask_Scene|Mask_Sky|Mask_Lighting|extraMask);
|
||||||
|
}
|
||||||
|
|
||||||
void setWaterLevel(float waterLevel)
|
void setWaterLevel(float waterLevel)
|
||||||
{
|
{
|
||||||
setViewMatrix(osg::Matrix::scale(1,1,-1) * osg::Matrix::translate(0,0,2 * waterLevel));
|
setViewMatrix(osg::Matrix::scale(1,1,-1) * osg::Matrix::translate(0,0,2 * waterLevel));
|
||||||
|
@ -668,8 +673,8 @@ void Water::changeCell(const MWWorld::CellStore* store)
|
||||||
mWaterNode->setPosition(osg::Vec3f(0,0,mTop));
|
mWaterNode->setPosition(osg::Vec3f(0,0,mTop));
|
||||||
mInterior = true;
|
mInterior = true;
|
||||||
}
|
}
|
||||||
if(mInterior != wasInterior)
|
if(mInterior != wasInterior && mReflection)
|
||||||
updateWaterMaterial();
|
mReflection->setInterior(mInterior);
|
||||||
|
|
||||||
// create a new StateSet to prevent threading issues
|
// create a new StateSet to prevent threading issues
|
||||||
osg::ref_ptr<osg::StateSet> nodeStateSet (new osg::StateSet);
|
osg::ref_ptr<osg::StateSet> nodeStateSet (new osg::StateSet);
|
||||||
|
|
Loading…
Reference in a new issue