fixed the sky elements positioning delay (nodes are now children of the camera node)

This commit is contained in:
scrawl 2012-02-21 16:49:28 +01:00
parent 2d8b0a4ac0
commit 10ca67c0a5
3 changed files with 9 additions and 16 deletions

View file

@ -40,10 +40,7 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const
mMwRoot->pitch(Degree(-90));
mObjects.setMwRoot(mMwRoot);
mActors.setMwRoot(mMwRoot);
//mSkyManager = 0;
mSkyManager = new SkyManager(mMwRoot, mRendering.getCamera());
//used to obtain ingame information of ogre objects (which are faced or selected)
mRaySceneQuery = mRendering.getScene()->createRayQuery(Ray());
@ -52,6 +49,9 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const
Ogre::SceneNode *cameraYawNode = playerNode->createChildSceneNode();
Ogre::SceneNode *cameraPitchNode = cameraYawNode->createChildSceneNode();
cameraPitchNode->attachObject(mRendering.getCamera());
//mSkyManager = 0;
mSkyManager = new SkyManager(mMwRoot, mRendering.getCamera());
mPlayer = new MWRender::Player (mRendering.getCamera(), playerNode);
mSun = 0;
@ -200,7 +200,7 @@ void RenderingManager::configureFog(ESMS::CellStore<MWWorld::RefData> &mCell)
Ogre::ColourValue color;
color.setAsABGR (mCell.cell->ambi.fog);
float high = 4500 + 9000 * (1-mCell.cell->ambi.fogDensity);
float high = /*4500 + 9000 * */(1-mCell.cell->ambi.fogDensity);
float low = 200;
mRendering.getScene()->setFog (FOG_LINEAR, color, 0, low, high);

View file

@ -211,8 +211,9 @@ SkyManager::SkyManager (SceneNode* pMwRoot, Camera* pCamera)
{
mViewport = pCamera->getViewport();
mSceneMgr = pMwRoot->getCreator();
mRootNode = pMwRoot->createChildSceneNode();
mRootNode->setScale(100.f, 100.f, 100.f);
mRootNode = pCamera->getParentSceneNode()->createChildSceneNode();
mRootNode->pitch(Degree(-90)); // convert MW to ogre coordinates
mRootNode->setInheritOrientation(false);
mViewport->setBackgroundColour(ColourValue(0.87, 0.87, 0.87));
@ -345,9 +346,6 @@ SkyManager::SkyManager (SceneNode* pMwRoot, Camera* pCamera)
mAtmosphereMaterial->getTechnique(0)->getPass(0)->setDepthWriteEnabled(false);
mAtmosphereMaterial->getTechnique(0)->getPass(0)->setSceneBlending(SBT_TRANSPARENT_ALPHA);
mCloudMaterial->getTechnique(0)->getPass(0)->setSceneBlending(SBT_TRANSPARENT_ALPHA);
mCamera = pCamera;
mCamera->setFarClipDistance(500000.f);
}
SkyManager::~SkyManager()
@ -358,11 +356,7 @@ SkyManager::~SkyManager()
}
void SkyManager::update(float duration)
{
// Sync the position of the skydomes with the camera
/// \todo for some reason this is 1 frame delayed, which causes the skydome move funnily when the camera moves
mRootNode->_setDerivedPosition(mCamera->getParentSceneNode()->_getDerivedPosition());
{
// UV Scroll the clouds
mCloudMaterial->getTechnique(0)->getPass(0)->getFragmentProgramParameters()->setNamedConstantFromTime("time", 1);
}

View file

@ -99,7 +99,6 @@ namespace MWRender
Moon* mMasser;
Moon* mSecunda;
Ogre::Camera* mCamera;
Ogre::Viewport* mViewport;
Ogre::SceneNode* mRootNode;
Ogre::SceneManager* mSceneMgr;