| 177 | } |
| 178 | |
| 179 | void RenderManager::createScene(Ogre::Viewport* nViewport) |
| 180 | { |
| 181 | OD_LOG_INF("Creating scene..."); |
| 182 | |
| 183 | mViewport = nViewport; |
| 184 | |
| 185 | //Set up the shader generator |
| 186 | mShaderGenerator = Ogre::RTShader::ShaderGenerator::getSingletonPtr(); |
| 187 | //shaderGenerator->setTargetLanguage("glsl"); |
| 188 | Ogre::ResourceGroupManager::getSingleton().addResourceLocation( |
| 189 | ResourceManager::getSingleton().getShaderCachePath(), "FileSystem", "Graphics"); |
| 190 | |
| 191 | //FIXME - this is a workaround for an issue where the shader cache files are not found. |
| 192 | //Haven't found out why this started happening. Think it worked in 3faa1aa285df504350f9704bdf20eb851fc5be3d |
| 193 | //atleast. |
| 194 | Ogre::ResourceGroupManager::getSingleton().addResourceLocation( |
| 195 | ResourceManager::getSingleton().getShaderCachePath() + "../", "FileSystem", "Graphics"); |
| 196 | mShaderGenerator->setShaderCachePath(ResourceManager::getSingleton().getShaderCachePath()); |
| 197 | |
| 198 | mShaderGenerator->addSceneManager(mSceneManager); |
| 199 | |
| 200 | mViewport->setMaterialScheme(Ogre::RTShader::ShaderGenerator::DEFAULT_SCHEME_NAME); |
| 201 | |
| 202 | // Sets the overall world lighting. |
| 203 | mSceneManager->setAmbientLight(BASE_AMBIENT_VALUE); |
| 204 | |
| 205 | Ogre::ParticleSystem::setDefaultNonVisibleUpdateTimeout(5); |
| 206 | |
| 207 | // Create the nodes that will follow the mouse pointer. |
| 208 | Ogre::Entity* keeperHandEnt = mSceneManager->createEntity("keeperHandEnt", "Keeperhand.mesh"); |
| 209 | keeperHandEnt->setLightMask(0); |
| 210 | keeperHandEnt->setCastShadows(false); |
| 211 | mHandAnimationState = keeperHandEnt->getAnimationState("Idle"); |
| 212 | mHandAnimationState->setTimePosition(0); |
| 213 | mHandAnimationState->setLoop(true); |
| 214 | mHandAnimationState->setEnabled(true); |
| 215 | // Note that we need to render something on OD_RENDER_QUEUE_ID_GUI otherwise, Ogre |
| 216 | // will not call the render function with queue id = OD_RENDER_QUEUE_ID_GUI and the |
| 217 | // GUI will not be displayed |
| 218 | keeperHandEnt->setRenderQueueGroup(OD_RENDER_QUEUE_ID_GUI); |
| 219 | |
| 220 | Ogre::OverlayManager& overlayManager = Ogre::OverlayManager::getSingleton(); |
| 221 | Ogre::Overlay* handKeeperOverlay = overlayManager.create(keeperHandEnt->getName() + "_Ov"); |
| 222 | mHandKeeperNode = mSceneManager->createSceneNode(keeperHandEnt->getName() + "_node"); |
| 223 | mHandKeeperNode->attachObject(keeperHandEnt); |
| 224 | mHandKeeperNode->setScale(Ogre::Vector3::UNIT_SCALE * KEEPER_HAND_POS_Z); |
| 225 | mHandKeeperNode->setPosition(0.0f, 0.0f, -KEEPER_HAND_POS_Z); |
| 226 | handKeeperOverlay->add3D(mHandKeeperNode); |
| 227 | handKeeperOverlay->show(); |
| 228 | |
| 229 | mHandKeeperNode->setVisible(mHandKeeperHandVisibility == 0); |
| 230 | } |
| 231 | |
| 232 | void RenderManager::setWorldAmbientLightingFactor(float lightFactor) |
| 233 | { |
no test coverage detected