void DoVisAnalyse(){ char filename[1024]; if ( g_FuncTable.m_pfnSelectedBrushCount() == 0 ) { if ( g_VisView ) { delete g_VisView; return; } } if ( g_FuncTable.m_pfnSelectedBrushCount() != 1 ) { DoMessageBox( "Invalid number of objects selected, select 1 only", "Error", MB_OK ); return; } g_FuncTable.m_pfnAllocateSelectedBrushHandles(); brush_t *brush = (brush_t*)g_FuncTable.m_pfnGetSelectedBrushHandle( 0 ); DBrush orgBrush; orgBrush.LoadFromBrush_t( brush, false ); g_FuncTable.m_pfnReleaseSelectedBrushHandles(); orgBrush.BuildBounds(); vec3_t origin; origin[0] = ( orgBrush.bbox_max[0] + orgBrush.bbox_min[0] ) / 2.f; origin[1] = ( orgBrush.bbox_max[1] + orgBrush.bbox_min[1] ) / 2.f; origin[2] = ( orgBrush.bbox_max[2] + orgBrush.bbox_min[2] ) / 2.f; char* rad_filename = g_FuncTable.m_pfnGetMapName(); if ( !rad_filename ) { DoMessageBox( "An Error Occurred While Trying\n To Get The Map Filename", "Error", MB_OK ); return; } strcpy( filename, rad_filename ); char* ext = strrchr( filename, '.' ) + 1; strcpy( ext, "bsp" ); // rename the extension list<DWinding*> *pointList = BuildTrace( filename, origin ); if ( !g_VisView ) { g_VisView = new DVisDrawer; g_VisView->Register(); } g_VisView->SetList( pointList ); }