rendered paste body#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<Ogre::OverlayContainer*>(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<Ogre::TextAreaOverlayElement*>(
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;
}