//--------------------------------------------------------------------- void OverlayManager::destroyAllOverlayElementsImpl(ElementMap& elementMap) { ElementMap::iterator i; while ((i = elementMap.begin()) != elementMap.end()) { OverlayElement* element = i->second; // Get factory to delete FactoryMap::iterator fi = mFactories.find(element->getTypeName()); if (fi == mFactories.end()) { OGRE_EXCEPT(Exception::ERR_ITEM_NOT_FOUND, "Cannot locate factory for element " + element->getName(), "OverlayManager::destroyAllOverlayElements"); } // remove from parent, if any OverlayContainer* parent; if ((parent = element->getParent()) != 0) { parent->_removeChild(element->getName()); } // children of containers will be auto-removed when container is destroyed. // destroy the element and remove it from the list fi->second->destroyOverlayElement(element); elementMap.erase(i); } }
//--------------------------------------------------------------------- void OverlayManager::destroyOverlayElementImpl(const String& instanceName, ElementMap& elementMap) { // Locate instance ElementMap::iterator ii = elementMap.find(instanceName); if (ii == elementMap.end()) { OGRE_EXCEPT(Exception::ERR_ITEM_NOT_FOUND, "OverlayElement with name " + instanceName + " not found.", "OverlayManager::destroyOverlayElement" ); } // Look up factory const String& typeName = ii->second->getTypeName(); FactoryMap::iterator fi = mFactories.find(typeName); if (fi == mFactories.end()) { OGRE_EXCEPT(Exception::ERR_ITEM_NOT_FOUND, "Cannot locate factory for element type " + typeName, "OverlayManager::destroyOverlayElement"); } fi->second->destroyOverlayElement(ii->second); elementMap.erase(ii); }