/** Delete a anti portal instance by name */ void PCZSceneManager::destroyAntiPortal(const String& portalName) { // find the anti portal from the master portal list AntiPortal* p; AntiPortal* thePortal = 0; AntiPortalList::iterator it = mAntiPortals.begin(); while (it != mAntiPortals.end()) { p = *it; if (p->getName() == portalName) { thePortal = p; // erase entry in the master list mAntiPortals.erase(it); break; } it++; } if (thePortal) { // remove the Portal from it's home zone PCZone* homeZone = thePortal->getCurrentHomeZone(); if (homeZone) { // inform zone of portal change homeZone->setPortalsUpdated(true); homeZone->_removeAntiPortal(thePortal); } // delete the portal instance OGRE_DELETE thePortal; } }
/** Delete a anti portal instance by pointer */ void PCZSceneManager::destroyAntiPortal(AntiPortal * p) { // remove the Portal from it's home zone PCZone* homeZone = p->getCurrentHomeZone(); if (homeZone) { // inform zone of portal change. Do here since PCZone is abstract homeZone->setPortalsUpdated(true); homeZone->_removeAntiPortal(p); } // remove the portal from the master portal list AntiPortalList::iterator it = std::find(mAntiPortals.begin(), mAntiPortals.end(), p); if (it != mAntiPortals.end()) mAntiPortals.erase(it); // delete the portal instance OGRE_DELETE p; }