//----------------------------------------------------------------------------- // 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; }
void CClientThinkList::CleanUpDeleteList() { int nThinkCount = m_aDeleteList.Count(); for ( int iThink = 0; iThink < nThinkCount; ++iThink ) { ClientEntityHandle_t handle = m_aDeleteList[iThink]; if ( handle != ClientEntityList().InvalidHandle() ) { C_BaseEntity *pEntity = ClientEntityList().GetBaseEntityFromHandle( handle ); if ( pEntity ) { pEntity->SetRemovalFlag( false ); } IClientThinkable *pThink = ClientEntityList().GetClientThinkableFromHandle( handle ); if ( pThink ) { pThink->Release(); } } } m_aDeleteList.RemoveAll(); }