/*
 =======================================================================================================================
    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;
}
示例#2
0
/*
================
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;
}
示例#3
0
/*
   ================
   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;
}