OgreSystem::~OgreSystem() { { SceneEntitiesMap toDelete; toDelete.swap(mSceneEntities); SceneEntitiesMap::iterator iter; for (iter = toDelete.begin(); iter != toDelete.end(); ++iter) { Entity* current = (*iter).second; delete current; } } decrefcount(); for (std::list<OgreSystem*>::iterator iter=sActiveOgreScenes.begin() ;iter!=sActiveOgreScenes.end();) { if (*iter==this) { sActiveOgreScenes.erase(iter++); break; }else ++iter; assert(iter!=sActiveOgreScenes.end()); } mProxyManager->removeListener(this); --sNumOgreSystems; if (sNumOgreSystems==0) { OGRE_DELETE sCDNArchivePlugin; sCDNArchivePlugin=NULL; OGRE_DELETE sRoot; sRoot=NULL; } delete mInputManager; }
Entity* getEntity(const SpaceObjectReference &proxyId) const { SceneEntitiesMap::const_iterator iter = mSceneEntities.find(proxyId); if (iter != mSceneEntities.end()) { return (*iter).second; } else { return NULL; } }