diff --git a/tools/quake3/q3map2/autopk3.cpp b/tools/quake3/q3map2/autopk3.cpp index 520fd309..fa9a4b91 100644 --- a/tools/quake3/q3map2/autopk3.cpp +++ b/tools/quake3/q3map2/autopk3.cpp @@ -296,8 +296,8 @@ int pk3BSPMain( Args& args ){ } } - for( i = 0; i < numBSPFogs; ++i ){ - res2list( pk3Shaders, bspFogs[i].shader ); + for( const bspFog_t& fog : bspFogs ){ + res2list( pk3Shaders, fog.shader ); } //levelshot @@ -959,8 +959,8 @@ int repackBSPMain( Args& args ){ } } - for( i = 0; i < numBSPFogs; ++i ){ - res2list( pk3Shaders, bspFogs[i].shader ); + for( const bspFog_t& fog : bspFogs ){ + res2list( pk3Shaders, fog.shader ); } //levelshot @@ -986,7 +986,7 @@ int repackBSPMain( Args& args ){ bspEntData.clear(); - numBSPFogs = 0; + bspFogs.clear(); } if( analyze ) diff --git a/tools/quake3/q3map2/bspfile_abstract.cpp b/tools/quake3/q3map2/bspfile_abstract.cpp index 6344f006..578411a9 100644 --- a/tools/quake3/q3map2/bspfile_abstract.cpp +++ b/tools/quake3/q3map2/bspfile_abstract.cpp @@ -164,10 +164,10 @@ void SwapBSPFile( void ){ SwapBlock( bspDrawSurfaces ); /* fogs */ - for ( i = 0; i < numBSPFogs; i++ ) + for ( bspFog_t& fog : bspFogs ) { - bspFogs[ i ].brushNum = LittleLong( bspFogs[ i ].brushNum ); - bspFogs[ i ].visibleSide = LittleLong( bspFogs[ i ].visibleSide ); + fog.brushNum = LittleLong( fog.brushNum ); + fog.visibleSide = LittleLong( fog.visibleSide ); } /* advertisements */ @@ -381,8 +381,8 @@ void PrintBSPFileSizes( void ){ bspBrushes.size(), bspBrushes.size() * sizeof( bspBrushes[0] ) ); Sys_Printf( "%9zu brushsides %9zu *\n", bspBrushSides.size(), bspBrushSides.size() * sizeof( bspBrushSides[0] ) ); - Sys_Printf( "%9d fogs %9d\n", - numBSPFogs, (int) ( numBSPFogs * sizeof( bspFog_t ) ) ); + Sys_Printf( "%9zu fogs %9zu\n", + bspFogs.size(), bspFogs.size() * sizeof( bspFogs[0] ) ); Sys_Printf( "%9zu planes %9zu\n", bspPlanes.size(), bspPlanes.size() * sizeof( bspPlanes[0] ) ); Sys_Printf( "%9zu entdata %9zu\n", diff --git a/tools/quake3/q3map2/bspfile_ibsp.cpp b/tools/quake3/q3map2/bspfile_ibsp.cpp index c9dbf25e..2d1e75fa 100644 --- a/tools/quake3/q3map2/bspfile_ibsp.cpp +++ b/tools/quake3/q3map2/bspfile_ibsp.cpp @@ -253,7 +253,7 @@ void LoadIBSPFile( const char *filename ){ CopyLump( (bspHeader_t*) header, LUMP_SURFACES, bspDrawSurfaces ); - numBSPFogs = CopyLump( (bspHeader_t*) header, LUMP_FOGS, bspFogs, sizeof( bspFog_t ) ); // TODO fix overflow + CopyLump( (bspHeader_t*) header, LUMP_FOGS, bspFogs ); CopyLump( (bspHeader_t*) header, LUMP_DRAWINDEXES, bspDrawIndexes ); @@ -305,7 +305,7 @@ void PartialLoadIBSPFile( const char *filename ){ CopyLump( (bspHeader_t*) header, LUMP_SURFACES, bspDrawSurfaces ); - numBSPFogs = CopyLump( (bspHeader_t*) header, LUMP_FOGS, bspFogs, sizeof( bspFog_t ) ); // TODO fix overflow + CopyLump( (bspHeader_t*) header, LUMP_FOGS, bspFogs ); CopyLump( (bspHeader_t*) header, LUMP_ENTITIES, bspEntData ); @@ -362,7 +362,7 @@ void WriteIBSPFile( const char *filename ){ AddLump( file, header->lumps[LUMP_LIGHTMAPS], bspLightBytes ); AddLump( file, header->lumps[LUMP_LIGHTGRID], std::vector( bspGridPoints.begin(), bspGridPoints.end() ) ); AddLump( file, header->lumps[LUMP_ENTITIES], bspEntData ); - AddLump( file, (bspHeader_t*) header, LUMP_FOGS, bspFogs, numBSPFogs * sizeof( bspFog_t ) ); + AddLump( file, header->lumps[LUMP_FOGS], bspFogs ); AddLump( file, header->lumps[LUMP_DRAWINDEXES], bspDrawIndexes ); /* advertisements */ diff --git a/tools/quake3/q3map2/bspfile_rbsp.cpp b/tools/quake3/q3map2/bspfile_rbsp.cpp index 9eb77735..a79748e1 100644 --- a/tools/quake3/q3map2/bspfile_rbsp.cpp +++ b/tools/quake3/q3map2/bspfile_rbsp.cpp @@ -219,7 +219,7 @@ void LoadRBSPFile( const char *filename ){ CopyLump( (bspHeader_t*) header, LUMP_SURFACES, bspDrawSurfaces ); - numBSPFogs = CopyLump( (bspHeader_t*) header, LUMP_FOGS, bspFogs, sizeof( bspFogs[ 0 ] ) ); + CopyLump( (bspHeader_t*) header, LUMP_FOGS, bspFogs ); CopyLump( (bspHeader_t*) header, LUMP_DRAWINDEXES, bspDrawIndexes ); @@ -286,7 +286,7 @@ void WriteRBSPFile( const char *filename ){ AddLump( file, header->lumps[LUMP_LIGHTMAPS], bspLightBytes ); AddLightGridLumps( file, header ); AddLump( file, header->lumps[LUMP_ENTITIES], bspEntData ); - AddLump( file, (bspHeader_t*) header, LUMP_FOGS, bspFogs, numBSPFogs * sizeof( bspFog_t ) ); + AddLump( file, header->lumps[LUMP_FOGS], bspFogs ); AddLump( file, header->lumps[LUMP_DRAWINDEXES], bspDrawIndexes ); /* emit bsp size */ diff --git a/tools/quake3/q3map2/convert_json.cpp b/tools/quake3/q3map2/convert_json.cpp index 3214c1fd..ef52a02d 100644 --- a/tools/quake3/q3map2/convert_json.cpp +++ b/tools/quake3/q3map2/convert_json.cpp @@ -300,7 +300,7 @@ static void write_json( const char *directory ){ } { doc.RemoveAllMembers(); - for_indexed( auto&& fog : Span( bspFogs, numBSPFogs ) ){ + for_indexed( const auto& fog : bspFogs ){ rapidjson::Value value( rapidjson::kObjectType ); value.AddMember( "shader", rapidjson::StringRef( fog.shader ), all ); value.AddMember( "brushNum", fog.brushNum, all ); @@ -501,15 +501,12 @@ static void read_json( const char *directory ){ } { const auto doc = load_json( StringOutputStream( 256 )( directory, "fogs.json" ) ); - static std::vector items; for( auto&& obj : doc.GetObj() ){ - auto&& item = items.emplace_back(); + auto&& item = bspFogs.emplace_back(); strcpy( item.shader, obj.value["shader"].GetString() ); item.brushNum = obj.value["brushNum"].GetInt(); item.visibleSide = obj.value["visibleSide"].GetInt(); } - std::copy( items.begin(), items.end(), bspFogs ); - numBSPFogs = items.size(); } { const auto doc = load_json( StringOutputStream( 256 )( directory, "DrawIndexes.json" ) ); diff --git a/tools/quake3/q3map2/q3map2.h b/tools/quake3/q3map2/q3map2.h index a732c0cb..18f3b3b8 100644 --- a/tools/quake3/q3map2/q3map2.h +++ b/tools/quake3/q3map2/q3map2.h @@ -2359,8 +2359,7 @@ Q_EXTERN std::vector bspDrawIndexes; Q_EXTERN std::vector bspDrawSurfaces; // MAX_MAP_DRAW_SURFS -Q_EXTERN int numBSPFogs Q_ASSIGN( 0 ); -Q_EXTERN bspFog_t bspFogs[ MAX_MAP_FOGS ]; +Q_EXTERN std::vector bspFogs; // MAX_MAP_FOGS Q_EXTERN int numBSPAds Q_ASSIGN( 0 ); Q_EXTERN bspAdvertisement_t bspAds[ MAX_MAP_ADVERTISEMENTS ]; diff --git a/tools/quake3/q3map2/writebsp.cpp b/tools/quake3/q3map2/writebsp.cpp index fa22ec87..57c01c72 100644 --- a/tools/quake3/q3map2/writebsp.cpp +++ b/tools/quake3/q3map2/writebsp.cpp @@ -411,17 +411,13 @@ void EmitBrushes( brushlist_t& brushes, int *firstBrush, int *numBrushes ){ */ void EmitFogs( void ){ - /* setup */ - numBSPFogs = numMapFogs; - /* walk list */ for ( int i = 0; i < numMapFogs; i++ ) { const fog_t& fog = mapFogs[i]; - bspFog_t& bspFog = bspFogs[i]; + bspFog_t& bspFog = bspFogs.emplace_back(); /* set shader */ - // copy and clear the rest of memory - strncpy( bspFog.shader, fog.si->shader, sizeof( bspFog.shader ) ); + strcpy( bspFog.shader, fog.si->shader ); /* global fog doesn't have an associated brush */ if ( fog.brush == NULL ) {