/* Remove all (entities and childrens scene nodes) */ void Util::removeAllFromNode(Ogre::SceneNode *node) { ASSERT(node); removeAllEntities(node); if(node->getParentSceneNode()){ node->getParentSceneNode()->removeAndDestroyChild(node->getName()); } }
void GameEntitySystem::removeScene(int sceneIndex) { if(sceneIndex < 0 || sceneIndex > sceneList.size() - 1 || sceneList.size() < 2) return; int currentSceneIndex = getCurrentSceneIndex(); if(currentSceneIndex == -1) { setCurrentScene(0); currentSceneIndex = 0; } int counter = 0; GameSceneList::iterator listIterator; for(listIterator = sceneList.begin(); listIterator != sceneList.end(); ++listIterator) { if(counter == sceneIndex) { entityList = &(*listIterator).entityList; removeAllEntities(); sceneList.erase(listIterator); break; } counter++; } if(sceneIndex < currentSceneIndex) { setCurrentScene(currentSceneIndex - 1); } else { setCurrentScene(currentSceneIndex); } }
/* Removes all the entities of a sceneNode (recursively) */ void Util::removeAllEntities(Ogre::SceneNode *node) { ASSERT(node); // Destroy all the attached objects Ogre::SceneNode::ObjectIterator itObject = node->getAttachedObjectIterator(); while (itObject.hasMoreElements()) { Ogre::MovableObject* pObject = static_cast<Ogre::MovableObject*> (itObject.getNext()); node->getCreator()->destroyMovableObject(pObject); } // Recurse to child SceneNodes Ogre::SceneNode::ChildNodeIterator itChild = node->getChildIterator(); while (itChild.hasMoreElements()) { Ogre::SceneNode* pChildNode = static_cast<Ogre::SceneNode*> (itChild.getNext()); removeAllEntities(pChildNode); } }
GEOL_Container::~GEOL_Container() { removeAllEntities(); removeAllContainers(); }
void EntityManager::reset() { removeAllEntities(); lowest_unassigned_eid_ = 1; }
EntityManager::~EntityManager() { removeAllEntities(); }
World::~World() { removeAllEntities(); GraphicsManager::GetInstance()->removeScene(_scene); }