mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-02-01 05:15:33 +00:00
fix sky position when reflection is enabled, fix delay in sky reflection
This commit is contained in:
parent
575244bd35
commit
b97b3d7b71
2 changed files with 7 additions and 7 deletions
|
@ -280,7 +280,7 @@ SkyManager::SkyManager (SceneNode* pMwRoot, Camera* pCamera)
|
||||||
, mMoonRed(false)
|
, mMoonRed(false)
|
||||||
{
|
{
|
||||||
mSceneMgr = pMwRoot->getCreator();
|
mSceneMgr = pMwRoot->getCreator();
|
||||||
mRootNode = mCamera->getParentSceneNode()->createChildSceneNode();
|
mRootNode = mSceneMgr->getRootSceneNode()->createChildSceneNode();
|
||||||
mRootNode->pitch(Degree(-90)); // convert MW to ogre coordinates
|
mRootNode->pitch(Degree(-90)); // convert MW to ogre coordinates
|
||||||
mRootNode->setInheritOrientation(false);
|
mRootNode->setInheritOrientation(false);
|
||||||
}
|
}
|
||||||
|
@ -405,7 +405,8 @@ void SkyManager::update(float duration)
|
||||||
{
|
{
|
||||||
if (!mEnabled) return;
|
if (!mEnabled) return;
|
||||||
|
|
||||||
mRootNode->setPosition(mCamera->getPosition());
|
mCamera->getParentSceneNode ()->needUpdate ();
|
||||||
|
mRootNode->setPosition(mCamera->getDerivedPosition());
|
||||||
|
|
||||||
// UV Scroll the clouds
|
// UV Scroll the clouds
|
||||||
mCloudAnimationTimer += duration * mCloudSpeed * (MWBase::Environment::get().getWorld()->getTimeScaleFactor()/30.f);
|
mCloudAnimationTimer += duration * mCloudSpeed * (MWBase::Environment::get().getWorld()->getTimeScaleFactor()/30.f);
|
||||||
|
@ -668,12 +669,13 @@ Ogre::SceneNode* SkyManager::getSunNode()
|
||||||
|
|
||||||
void SkyManager::setSkyPosition(const Ogre::Vector3& position)
|
void SkyManager::setSkyPosition(const Ogre::Vector3& position)
|
||||||
{
|
{
|
||||||
mRootNode->_setDerivedPosition(position);
|
mRootNode->setPosition(position);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SkyManager::resetSkyPosition()
|
void SkyManager::resetSkyPosition()
|
||||||
{
|
{
|
||||||
mRootNode->setPosition(0,0,0);
|
mCamera->getParentSceneNode ()->needUpdate ();
|
||||||
|
mRootNode->setPosition(mCamera->getDerivedPosition());
|
||||||
}
|
}
|
||||||
|
|
||||||
void SkyManager::scaleSky(float scale)
|
void SkyManager::scaleSky(float scale)
|
||||||
|
|
|
@ -207,6 +207,7 @@ void Water::preRenderTargetUpdate(const RenderTargetEvent& evt)
|
||||||
{
|
{
|
||||||
if (evt.source == mReflectionTarget)
|
if (evt.source == mReflectionTarget)
|
||||||
{
|
{
|
||||||
|
mCamera->getParentSceneNode ()->needUpdate ();
|
||||||
mReflectionCamera->setOrientation(mCamera->getDerivedOrientation());
|
mReflectionCamera->setOrientation(mCamera->getDerivedOrientation());
|
||||||
mReflectionCamera->setPosition(mCamera->getDerivedPosition());
|
mReflectionCamera->setPosition(mCamera->getDerivedPosition());
|
||||||
mReflectionCamera->setNearClipDistance(mCamera->getNearClipDistance());
|
mReflectionCamera->setNearClipDistance(mCamera->getNearClipDistance());
|
||||||
|
@ -215,11 +216,9 @@ void Water::preRenderTargetUpdate(const RenderTargetEvent& evt)
|
||||||
mReflectionCamera->setFOVy(mCamera->getFOVy());
|
mReflectionCamera->setFOVy(mCamera->getFOVy());
|
||||||
mReflectionRenderActive = true;
|
mReflectionRenderActive = true;
|
||||||
|
|
||||||
/// \todo the reflection render (and probably all renderingmanager-updates) lag behind 1 camera frame for some reason
|
|
||||||
Vector3 pos = mCamera->getRealPosition();
|
Vector3 pos = mCamera->getRealPosition();
|
||||||
pos.y = mTop*2 - pos.y;
|
pos.y = mTop*2 - pos.y;
|
||||||
mSky->setSkyPosition(pos);
|
mSky->setSkyPosition(pos);
|
||||||
mSky->scaleSky(mCamera->getFarClipDistance() / 50.f);
|
|
||||||
mReflectionCamera->enableReflection(mWaterPlane);
|
mReflectionCamera->enableReflection(mWaterPlane);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -229,7 +228,6 @@ void Water::postRenderTargetUpdate(const RenderTargetEvent& evt)
|
||||||
if (evt.source == mReflectionTarget)
|
if (evt.source == mReflectionTarget)
|
||||||
{
|
{
|
||||||
mSky->resetSkyPosition();
|
mSky->resetSkyPosition();
|
||||||
mSky->scaleSky(1);
|
|
||||||
mReflectionCamera->disableReflection();
|
mReflectionCamera->disableReflection();
|
||||||
mReflectionCamera->disableCustomNearClipPlane();
|
mReflectionCamera->disableCustomNearClipPlane();
|
||||||
mReflectionRenderActive = false;
|
mReflectionRenderActive = false;
|
||||||
|
|
Loading…
Reference in a new issue