All pastes #248565 Raw Edit

Someone

public text v1 · immutable
#248565 ·published 2006-11-14 20:10 UTC
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;
}