I'm working on Ogre3D with the Version 1.10.0unstable (Xalafu) and CEGUI.
Here is my problem, i have my first class that implements my menu and the function where all start:
Code: Select all
createCamera();
createScene();
createFrameListener();
while(true) {
Ogre::WindowEventUtilities::messagePump();
if(mWindow->isClosed())
return false;
if(!mRoot->renderOneFrame())
return false;
}
Code: Select all
void Menu::play()
{
Bomberman bomberman(mRoot, mWindow, mSceneMgr, mListener, _nbPlayerLocal, _nbPlayerOther);
CEGUI::WindowManager::getSingleton().destroyAllWindows();
mCamera->setPosition(0, 170, 130);
mCamera->lookAt(Ogre::Vector3(0, 0, 0));
mSceneMgr->getRootSceneNode()->removeChild("backgroundMenu");
bomberman.play();
}
Code: Select all
if (_map[i][j] == 1){
ent = mSceneMgr->createEntity("cube.mesh");
nodeCube = _nodeMap->createChildSceneNode();
nodeCube->attachObject(ent);
ent->setMaterialName("cubeWall");
nodeCube->scale(Ogre::Vector3(0.1, 0.15, 0.1));
nodeCube->translate(startX + (static_cast<int>(i) % static_cast<int>(width)) * 10.0, 5.0, startZ + x * 10.0);
}
That's strange because if I try to create my map in my class Menu, i don't have any error..
Any ideas ?
EDIT:
Some news. In my class Map, i create a plane in my constructor:
Code: Select all
Map::Map(Ogre::SceneManager *scenemgr)
{
std::ifstream myFile("map.txt");
std::string input;
int i;
i = 0;
mSceneMgr = scenemgr;
_nodeMap = createGround(mSceneMgr->getRootSceneNode()->createChildSceneNode("nodeRoot"));
}
Code: Select all
Ogre::SceneNode *Map::createGround(Ogre::SceneNode *nodeRoot) const
{
Ogre::Entity *ent;
Ogre::SceneNode *nodePlan, *nodeCube;
Ogre::Plane plan(Ogre::Vector3::UNIT_Y, 0);
Ogre::MeshManager::getSingleton().createPlane("sol", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, plan, 170, 150, 10, 10, true, 1, 1, 1, Ogre::Vector3::UNIT_Z);
ent = mSceneMgr->createEntity("sol");
ent->setMaterialName("DarkGrass");
nodePlan = mSceneMgr->getRootSceneNode()->createChildSceneNode("nodePlan");
nodePlan->attachObject(ent);
// mSceneMgr->createEntity("cubeMesh", "cube.mesh");
// ent->setMaterialName("cubeWall");
// nodeCube = nodePlan->createChildSceneNode();
// nodeCube->attachObject(ent);
// nodeCube->scale(Ogre::Vector3(0.1, 0.15, 0.1));
return (nodePlan);
}
Thank's in advance.