Felipe
23-08-2007 11:51:29
the error happen when change of state
my code:
the error in line : Ogre::SceneNode::ObjectIterator object_it = mNode->getAttachedObjectIterator();
my code:
#include "PlayState.h"
#include "PauseState.h"
#include "MainMenuState.h"
#include <OgreFrameListener.h>
#include <OgreEntity.h>
#include <OgreMeshManager.h>
#include "WorldManager.h"
#include "NxOgre.h"
using namespace NxOgre;
using namespace Ogre;
PlayState* PlayState::mPlayState;
void PlayState::enter( void )
{
mRoot = Root::getSingletonPtr();
mSceneMgr = mRoot->getSceneManager( "TerrainSceneManager" );
mCamera = mSceneMgr->createCamera( "Camera" );
mCamera->setNearClipDistance( 1 );
mCamera->setFarClipDistance(0);
mViewport = mRoot->getAutoCreatedWindow()->addViewport( mCamera );
mWorld = new World("log: html");
mScene = mWorld->createScene("Main", mSceneMgr, "gravity: yes, floor: yes");
Ogre::StaticGeometry *mStaticGeom= mSceneMgr->createStaticGeometry("Grid");
mStaticGeom->addEntity(mSceneMgr->createEntity("nx.floor", "nx.floor.mesh"), Ogre::Vector3(0,-0.05f,0));
mStaticGeom->build();
mStaticGeom->setCastShadows(false);
mSceneMgr->setAmbientLight(ColourValue(1, 1, 1));
mBody = mScene->createBody("cube.1m.mesh", new CubeShape(1), Vector3(0,5,0), "mass: 10");
}
void PlayState::exit( void ) {
mSceneMgr->clearScene();
mSceneMgr->destroyAllCameras();
mRoot->getAutoCreatedWindow()->removeAllViewports();
//delete mBody;
delete mWorld;
}
the error in line : Ogre::SceneNode::ObjectIterator object_it = mNode->getAttachedObjectIterator();
Body::~Body() {
if (mNode == 0)
return;
// here the error
Ogre::SceneNode::ObjectIterator object_it = mNode->getAttachedObjectIterator();
Ogre::MovableObject *m;
while(object_it.hasMoreElements()) {
m = object_it.getNext();
if (m->getMovableType() == "Entity") {
mOwner->getSceneManager()->destroyEntity((Ogre::Entity*) m);
}
else {
mNode->detachObject(m);
mOwner->getSceneManager()->getRootSceneNode()->attachObject(m);
}
}