#include "IntroState.h" #include "OgreTextAreaOverlayElement.h" #include "OgreFontManager.h" IntroState IntroState::mIntroState; //-------------------------------------------- void IntroState::enter() { addResourceLocations(); mRoot = Ogre::Root::getSingletonPtr(); mRenderWindow = mRoot->getAutoCreatedWindow(); mInputManager = InputManager::getSingletonPtr(); createSceneManager(); createCamera(); createViewports(); initResources(); createScene(); mColValue = 0.0; } //-------------------------------------------- void IntroState::createCamera() { mCamera = mSceneMgr->createCamera("IntroCamera"); mCamera->setNearClipDistance(5); mCamera->setPosition(0, 20, 500); mCamera->lookAt(0,0,0); } //-------------------------------------------- void IntroState::createScene() { mSceneMgr->setAmbientLight(Ogre::ColourValue(1, 1, 1)); Ogre::Entity *ent1 = mSceneMgr->createEntity( "Robot", "robot.mesh" ); Ogre::SceneNode *node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "RobotNode" ); node1->attachObject(ent1); Ogre::OverlayManager *overlayMgr = Ogre::OverlayManager::getSingletonPtr(); panel = static_cast(overlayMgr->createOverlayElement("Panel", "Panel name")); panel->setMetricsMode(Ogre::GMM_PIXELS); panel->setPosition(10,10); panel->setDimensions(100, 100); //panel->setColour(Ogre::ColourValue(0,0,0)); Ogre::TextAreaOverlayElement* textArea = static_cast( overlayMgr->createOverlayElement("TextArea", "TextAreaName")); textArea->setMetricsMode(Ogre::GMM_PIXELS); textArea->setPosition(10, 10); textArea->setDimensions(100, 100); textArea->setCaption("Hello, World!"); textArea->setCharHeight(16); //textArea->setFontName("TrebuchetMSBold"); textArea->setColourBottom(Ogre::ColourValue(0.3, 0.5, 0.3)); textArea->setColourTop(Ogre::ColourValue(0.5, 0.7, 0.5)); Ogre::Overlay *overlay = overlayMgr->create("Overlay name"); overlay->add2D(panel); overlay->show(); mOverlayFade = 0.0; } //-------------------------------------------- void IntroState::createSceneManager() { mSceneMgr = mRoot->createSceneManager(Ogre::ST_GENERIC); } //-------------------------------------------- void IntroState::createViewports() { mViewport = mRenderWindow->addViewport(mCamera); mViewport->setBackgroundColour(Ogre::ColourValue(1, 1, 1)); mCamera->setAspectRatio(Ogre::Real(mViewport->getActualWidth()) / Ogre::Real(mViewport->getActualHeight())); } //-------------------------------------------- void IntroState::addResourceLocations() { // Load resource paths from config file Ogre::ConfigFile cf; cf.load("resources.cfg"); // Go through all sections & settings in the file Ogre::ConfigFile::SectionIterator seci = cf.getSectionIterator(); Ogre::String secName, typeName, archName; while (seci.hasMoreElements()) { secName = seci.peekNextKey(); Ogre::ConfigFile::SettingsMultiMap *settings = seci.getNext(); Ogre::ConfigFile::SettingsMultiMap::iterator i; for (i = settings->begin(); i != settings->end(); ++i) { typeName = i->first; archName = i->second; Ogre::ResourceGroupManager::getSingleton().addResourceLocation(archName, typeName, secName); } } } //-------------------------------------------- void IntroState::initResources() { // Initialise, parse scripts etc Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups(); } //-------------------------------------------- void IntroState::exit() { } //-------------------------------------------- void IntroState::pause() { } //-------------------------------------------- void IntroState::resume() { } //-------------------------------------------- bool IntroState::keyClicked(const OIS::KeyEvent &e) { return true; } //-------------------------------------------- bool IntroState::keyPressed(const OIS::KeyEvent &e) { if(e.key == OIS::KC_ESCAPE) { mExit = true; } if(e.key == OIS::KC_SPACE) { if(mColValue <= 0.0) direction = true; else if(mColValue >= 1.0) direction = false; if(direction) // increment instead mColValue += 0.01; else mColValue -= 0.01; mViewport->setBackgroundColour(Ogre::ColourValue(mColValue,mColValue,mColValue)); } return true; } //-------------------------------------------- bool IntroState::keyReleased(const OIS::KeyEvent &e) { return true; } //-------------------------------------------- bool IntroState::mouseMoved(const OIS::MouseEvent &e) { return true; } //-------------------------------------------- bool IntroState::mousePressed(const OIS::MouseEvent &e, OIS::MouseButtonID id) { return true; } //-------------------------------------------- bool IntroState::mouseReleased(const OIS::MouseEvent &e, OIS::MouseButtonID id) { return true; } //-------------------------------------------- bool IntroState::frameStarted(const Ogre::FrameEvent &e) { //panel->setColour(Ogre::ColourValue(0,0,0,variable)); if(mExit) return false; return true; } //-------------------------------------------- bool IntroState::frameEnded(const Ogre::FrameEvent& evt) { if(mExit) return false; return true; }