void CGlobalEntityList::Clear( void ) { m_bClearingEntities = true; // Add all remaining entities in the game to the delete list and call appropriate UpdateOnRemove CBaseHandle hCur = FirstHandle(); while ( hCur != InvalidHandle() ) { IServerNetworkable *ent = GetServerNetworkable( hCur ); if ( ent ) { MDLCACHE_CRITICAL_SECTION(); // Force UpdateOnRemove to be called UTIL_Remove( ent ); } hCur = NextHandle( hCur ); } CleanupDeleteList(); // free the memory g_DeleteList.Purge(); CBaseEntity::m_nDebugPlayer = -1; CBaseEntity::m_bInDebugSelect = false; m_iHighestEnt = 0; m_iNumEnts = 0; m_bClearingEntities = false; }
//----------------------------------------------------------------------------- // Purpose: Clears all entity lists and releases entities //----------------------------------------------------------------------------- void CClientEntityList::Release( void ) { // Free all the entities. ClientEntityHandle_t iter = FirstHandle(); ClientEntityHandle_t next; while( iter != InvalidHandle() ) { next = NextHandle( iter ); // Try to call release on anything we can. IClientNetworkable *pNet = GetClientNetworkableFromHandle( iter ); if ( pNet ) { pNet->Release(); } else { // Try to call release on anything we can. IClientThinkable *pThinkable = GetClientThinkableFromHandle( iter ); if ( pThinkable ) { pThinkable->Release(); } } RemoveEntity( iter ); iter = next; } m_iNumServerEnts = 0; m_iMaxServerEnts = 0; m_iMaxUsedServerIndex = -1; }