I never call this method explicitly in code (Most likely it does CEGUI), but if I call Ogre::Light::getDerivedDirection() i got assertion too.
What's wrong?
I created viewport via compositor:
Code: Select all
Ogre::CompositorManager2* compos = mOgreRoot->getCompositorManager2();
LOG("Count viewports: %d", mRenderWnd->getNumViewports()); // Count viewports: 0 (Good..)
compos->createBasicWorkspaceDef("MainWorkspace", Ogre::ColourValue(.153f, .204f, .255f), Ogre::IdString());
compos->addWorkspace(mSceneMng, mRenderWnd, mMainCamera, "MainWorkspace", true);
LOG("Count viewports: %d", mRenderWnd->getNumViewports()); // Count viewports: 2 (lol what?)
code:
Code: Select all
Ogre::LogManager::getSingleton().logMessage("*** Create Direction Light ***");
Ogre::Light* sunLight = Application::getSingleton().getSceneMng().createLight();
sunLight->setType(Ogre::Light::LightTypes::LT_DIRECTIONAL);
sunLight->setDiffuseColour(0.35, 0.35, 0.38);
sunLight->setSpecularColour(0.9, 0.9, 1);
Ogre::SceneNode* sunLightNode = Application::getSingleton().getSceneMng().getRootSceneNode()->createChildSceneNode();
sunLightNode->attachObject(sunLight);
sunLightNode->setPosition(100.f, 700.f ,300.f);
Ogre::Vector3 dir = sunLightNode->getPosition();
dir.normalise();
sunLightNode->setDirection(dir);
Ogre::LogManager::getSingleton().logMessage("*** Direction Light Created ***");
mTerrainGlobals->setLightMapDirection(sunLight->getDerivedDirection()); // OgreMain\src\OgreNode.cpp:622: Ogre::Quaternion Ogre::Node::_getDerivedOrientation() const: assertion "!mCachedTransformOutOfDate" failed
mTerrainGlobals->setCompositeMapAmbient(Application::getSingleton().getSceneMng().getAmbientLight());
mTerrainGlobals->setCompositeMapDiffuse(sunLight->getDiffuseColour());
Any ideas?