1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
| #include "AppDemarrage.h"
AppDemarrage::AppDemarrage() : mRoot(0)
{
}
void AppDemarrage::createFrameListener()
{
mInputListener = new InputListener(mWindow, mCamera, mSceneMgr);
mRoot->addFrameListener(mInputListener);
mAnimationState = mRobot->getAnimationState("Idle");
mAnimationState->setLoop(true);
mAnimationState->setEnabled(true);
}
bool AppDemarrage::start()
{
mRoot = new Ogre::Root("plugins.cfg", "ogre.cfg", "Ogre.log");
Ogre::ConfigFile configFile;
configFile.load("resources.cfg");
Ogre::ConfigFile::SectionIterator seci = configFile.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);
}
}
if(!(mRoot->restoreConfig() || mRoot->showConfigDialog()))
{
return false;
}
// variante : configuration sans boite de dialogue
if (mRoot->showConfigDialog())
{
mWindow = mRoot->initialise(true, "Ogre3D");
}
Ogre::TextureManager::getSingleton().setDefaultNumMipmaps(5);
Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
mSceneMgr = mRoot->createSceneManager("DefaultSceneManager", "Mon Scene Manager");
mSceneMgr->setAmbientLight(Ogre::ColourValue(1.0f, 1.0f, 1.0f));
mCamera = mSceneMgr->createCamera("PlayerCam");
mCamera->setPosition(Ogre::Vector3(0,0,100));
mCamera->lookAt(Ogre::Vector3(0,0,0));
mCamera->setNearClipDistance(5);
Ogre::Viewport* vp = mWindow->addViewport(mCamera);
vp->setBackgroundColour(Ogre::ColourValue(0,0,0));
mCamera->setAspectRatio(Ogre::Real(vp->getActualWidth()) / Ogre::Real(vp->getActualHeight()));
mRobot = mSceneMgr->createEntity("Robot", "robot.mesh");
mRobotNode = mSceneMgr->getRootSceneNode()->createChildSceneNode("RobotNode");
mRobotNode->attachObject(mRobot);
createFrameListener();
mRoot->startRendering();
while(true)
{
Ogre::WindowEventUtilities::messagePump();
if(mWindow->isClosed())
return false;
if(!mRoot->renderOneFrame())
return false;
}
}
void AppDemarrage::createScene()
{
}
AppDemarrage::~AppDemarrage()
{
OGRE_DELETE mRoot;
OGRE_DELETE mCamera;
OGRE_DELETE mSceneMgr;
OGRE_DELETE mWindow;
delete mRoot;
} |
Partager