mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-19 21:53:51 +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)
|
||||
{
|
||||
mSceneMgr = pMwRoot->getCreator();
|
||||
mRootNode = mCamera->getParentSceneNode()->createChildSceneNode();
|
||||
mRootNode = mSceneMgr->getRootSceneNode()->createChildSceneNode();
|
||||
mRootNode->pitch(Degree(-90)); // convert MW to ogre coordinates
|
||||
mRootNode->setInheritOrientation(false);
|
||||
}
|
||||
|
@ -405,7 +405,8 @@ void SkyManager::update(float duration)
|
|||
{
|
||||
if (!mEnabled) return;
|
||||
|
||||
mRootNode->setPosition(mCamera->getPosition());
|
||||
mCamera->getParentSceneNode ()->needUpdate ();
|
||||
mRootNode->setPosition(mCamera->getDerivedPosition());
|
||||
|
||||
// UV Scroll the clouds
|
||||
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)
|
||||
{
|
||||
mRootNode->_setDerivedPosition(position);
|
||||
mRootNode->setPosition(position);
|
||||
}
|
||||
|
||||
void SkyManager::resetSkyPosition()
|
||||
{
|
||||
mRootNode->setPosition(0,0,0);
|
||||
mCamera->getParentSceneNode ()->needUpdate ();
|
||||
mRootNode->setPosition(mCamera->getDerivedPosition());
|
||||
}
|
||||
|
||||
void SkyManager::scaleSky(float scale)
|
||||
|
|
|
@ -207,6 +207,7 @@ void Water::preRenderTargetUpdate(const RenderTargetEvent& evt)
|
|||
{
|
||||
if (evt.source == mReflectionTarget)
|
||||
{
|
||||
mCamera->getParentSceneNode ()->needUpdate ();
|
||||
mReflectionCamera->setOrientation(mCamera->getDerivedOrientation());
|
||||
mReflectionCamera->setPosition(mCamera->getDerivedPosition());
|
||||
mReflectionCamera->setNearClipDistance(mCamera->getNearClipDistance());
|
||||
|
@ -215,11 +216,9 @@ void Water::preRenderTargetUpdate(const RenderTargetEvent& evt)
|
|||
mReflectionCamera->setFOVy(mCamera->getFOVy());
|
||||
mReflectionRenderActive = true;
|
||||
|
||||
/// \todo the reflection render (and probably all renderingmanager-updates) lag behind 1 camera frame for some reason
|
||||
Vector3 pos = mCamera->getRealPosition();
|
||||
pos.y = mTop*2 - pos.y;
|
||||
mSky->setSkyPosition(pos);
|
||||
mSky->scaleSky(mCamera->getFarClipDistance() / 50.f);
|
||||
mReflectionCamera->enableReflection(mWaterPlane);
|
||||
}
|
||||
}
|
||||
|
@ -229,7 +228,6 @@ void Water::postRenderTargetUpdate(const RenderTargetEvent& evt)
|
|||
if (evt.source == mReflectionTarget)
|
||||
{
|
||||
mSky->resetSkyPosition();
|
||||
mSky->scaleSky(1);
|
||||
mReflectionCamera->disableReflection();
|
||||
mReflectionCamera->disableCustomNearClipPlane();
|
||||
mReflectionRenderActive = false;
|
||||
|
|
Loading…
Reference in a new issue