void ObjectMap::CopyObjectsToSpecializedMaps() { FOR_EACH_SPECIALIZED_MAP(ClearMap); for (std::map<int, TemporaryPtr<UniverseObject> >::iterator it = Map<UniverseObject>().begin(); it != Map<UniverseObject>().end(); ++it) { FOR_EACH_SPECIALIZED_MAP(TryInsertIntoMap, it->second); } }
boost::shared_ptr<UniverseObject> ObjectMap::Remove(int id) { // search for object in objects map std::map<int, boost::shared_ptr<UniverseObject> >::iterator it = m_objects.find(id); if (it == m_objects.end()) return boost::shared_ptr<UniverseObject>(); //Logger().debugStream() << "Object was removed: " << it->second->Dump(); // object found, so store pointer for later... boost::shared_ptr<UniverseObject> result = it->second; // and erase from pointer maps m_objects.erase(it); FOR_EACH_SPECIALIZED_MAP(EraseFromMap, id); m_existing_objects.erase(id); m_existing_buildings.erase(id); m_existing_fields.erase(id); m_existing_fleets.erase(id); m_existing_ships.erase(id); m_existing_planets.erase(id); m_existing_pop_centers.erase(id); m_existing_resource_centers.erase(id); m_existing_systems.erase(id); return result; }