/* ======================================================================================================================= Map_Free ======================================================================================================================= */ void Map_Free(void) { g_bRestoreBetween = false; if (selected_brushes.next && (selected_brushes.next != &selected_brushes)) { if (g_pParentWnd->MessageBox("Copy selection?", "", MB_YESNO) == IDYES) { Map_SaveBetween(); } } // clear all the render and sound system data g_qeglobals.rw->InitFromMap(NULL); g_qeglobals.sw->ClearAllSoundEmitters(); Texture_ClearInuse(); Pointfile_Clear(); strcpy(currentmap, "unnamed.map"); Sys_SetTitle(currentmap); g_qeglobals.d_num_entities = 0; if (!active_brushes.next) { // first map active_brushes.prev = active_brushes.next = &active_brushes; selected_brushes.prev = selected_brushes.next = &selected_brushes; filtered_brushes.prev = filtered_brushes.next = &filtered_brushes; entities.prev = entities.next = &entities; } else { while (active_brushes.next != &active_brushes) { Brush_Free(active_brushes.next, false); } while (selected_brushes.next != &selected_brushes) { Brush_Free(selected_brushes.next, false); } while (filtered_brushes.next != &filtered_brushes) { Brush_Free(filtered_brushes.next, false); } while (entities.next != &entities) { Entity_Free(entities.next); } } if (world_entity) { Entity_Free(world_entity); } world_entity = NULL; }
/* ================ Map_Free ================ */ void Map_Free (void) { g_bRestoreBetween = false; if (selected_brushes.next && (selected_brushes.next != &selected_brushes) ) { if (MessageBox(g_qeglobals.d_hwndMain, "Copy selection?", "", MB_YESNO) == IDYES) Map_SaveBetween (); } Texture_ClearInuse (); Pointfile_Clear (); strcpy (currentmap, "unnamed.map"); Sys_SetTitle (currentmap); g_qeglobals.d_num_entities = 0; g_qeglobals.d_numterrapoints = 0; if (!active_brushes.next) { // first map active_brushes.prev = active_brushes.next = &active_brushes; selected_brushes.prev = selected_brushes.next = &selected_brushes; filtered_brushes.prev = filtered_brushes.next = &filtered_brushes; entities.prev = entities.next = &entities; } else { while (active_brushes.next != &active_brushes) Brush_Free (active_brushes.next); while (selected_brushes.next != &selected_brushes) Brush_Free (selected_brushes.next); while (filtered_brushes.next != &filtered_brushes) Brush_Free (filtered_brushes.next); while (entities.next != &entities) Entity_Free (entities.next); } if (world_entity) Entity_Free(world_entity); world_entity = NULL; }
/* ================ Map_Free free all map elements, reinitialize the structures that depend on them ================ */ void Map_Free( void ){ g_bRestoreBetween = false; if ( selected_brushes.next && ( selected_brushes.next != &selected_brushes ) ) { if ( gtk_MessageBox( g_pParentWnd->m_pWidget, "Copy selection?", " ", MB_YESNO ) == IDYES ) { Map_SaveBetween(); } } QERApp_ActiveShaders_SetInUse( false ); Pointfile_Clear(); g_qeglobals.d_num_entities = 0; if ( !active_brushes.next ) { // first map active_brushes.prev = active_brushes.next = &active_brushes; selected_brushes.prev = selected_brushes.next = &selected_brushes; filtered_brushes.prev = filtered_brushes.next = &filtered_brushes; entities.prev = entities.next = &entities; } else { // free selected faces array g_ptrSelectedFaces.RemoveAll(); g_ptrSelectedFaceBrushes.RemoveAll(); while ( active_brushes.next != &active_brushes ) Brush_Free( active_brushes.next ); while ( selected_brushes.next != &selected_brushes ) Brush_Free( selected_brushes.next ); while ( filtered_brushes.next != &filtered_brushes ) Brush_Free( filtered_brushes.next ); while ( entities.next != &entities ) Entity_Free( entities.next ); } if ( world_entity ) { Entity_Free( world_entity ); } world_entity = NULL; }