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; }
CPhysicsEnvironment::~CPhysicsEnvironment() { #if DEBUG_DRAW delete m_debugdraw; #endif SetQuickDelete(true); for (int i = m_objects.Count() - 1; i >= 0; --i) { delete m_objects[i]; } for (int i = m_softBodies.Count() - 1; i >= 0; --i) { delete m_softBodies[i]; } m_objects.RemoveAll(); m_softBodies.RemoveAll(); CleanupDeleteList(); delete m_pDeleteQueue; delete m_pPhysicsDragController; delete m_pBulletEnvironment; delete m_pBulletSolver; delete m_pBulletBroadphase; delete m_pBulletDispatcher; delete m_pBulletConfiguration; delete m_pBulletGhostCallback; #ifdef MULTITHREADED m_pSharedThreadPool->stopThreads(); delete m_pSharedThreadPool; #endif delete m_pCollisionListener; delete m_pCollisionSolver; delete m_pObjectTracker; }