std::vector<bspFog_t> bspFogs

This commit is contained in:
Garux 2021-09-27 12:56:08 +03:00
parent 4642753564
commit ce0dd55cc5
7 changed files with 20 additions and 28 deletions

View File

@ -296,8 +296,8 @@ int pk3BSPMain( Args& args ){
} }
} }
for( i = 0; i < numBSPFogs; ++i ){ for( const bspFog_t& fog : bspFogs ){
res2list( pk3Shaders, bspFogs[i].shader ); res2list( pk3Shaders, fog.shader );
} }
//levelshot //levelshot
@ -959,8 +959,8 @@ int repackBSPMain( Args& args ){
} }
} }
for( i = 0; i < numBSPFogs; ++i ){ for( const bspFog_t& fog : bspFogs ){
res2list( pk3Shaders, bspFogs[i].shader ); res2list( pk3Shaders, fog.shader );
} }
//levelshot //levelshot
@ -986,7 +986,7 @@ int repackBSPMain( Args& args ){
bspEntData.clear(); bspEntData.clear();
numBSPFogs = 0; bspFogs.clear();
} }
if( analyze ) if( analyze )

View File

@ -164,10 +164,10 @@ void SwapBSPFile( void ){
SwapBlock( bspDrawSurfaces ); SwapBlock( bspDrawSurfaces );
/* fogs */ /* fogs */
for ( i = 0; i < numBSPFogs; i++ ) for ( bspFog_t& fog : bspFogs )
{ {
bspFogs[ i ].brushNum = LittleLong( bspFogs[ i ].brushNum ); fog.brushNum = LittleLong( fog.brushNum );
bspFogs[ i ].visibleSide = LittleLong( bspFogs[ i ].visibleSide ); fog.visibleSide = LittleLong( fog.visibleSide );
} }
/* advertisements */ /* advertisements */
@ -381,8 +381,8 @@ void PrintBSPFileSizes( void ){
bspBrushes.size(), bspBrushes.size() * sizeof( bspBrushes[0] ) ); bspBrushes.size(), bspBrushes.size() * sizeof( bspBrushes[0] ) );
Sys_Printf( "%9zu brushsides %9zu *\n", Sys_Printf( "%9zu brushsides %9zu *\n",
bspBrushSides.size(), bspBrushSides.size() * sizeof( bspBrushSides[0] ) ); bspBrushSides.size(), bspBrushSides.size() * sizeof( bspBrushSides[0] ) );
Sys_Printf( "%9d fogs %9d\n", Sys_Printf( "%9zu fogs %9zu\n",
numBSPFogs, (int) ( numBSPFogs * sizeof( bspFog_t ) ) ); bspFogs.size(), bspFogs.size() * sizeof( bspFogs[0] ) );
Sys_Printf( "%9zu planes %9zu\n", Sys_Printf( "%9zu planes %9zu\n",
bspPlanes.size(), bspPlanes.size() * sizeof( bspPlanes[0] ) ); bspPlanes.size(), bspPlanes.size() * sizeof( bspPlanes[0] ) );
Sys_Printf( "%9zu entdata %9zu\n", Sys_Printf( "%9zu entdata %9zu\n",

View File

@ -253,7 +253,7 @@ void LoadIBSPFile( const char *filename ){
CopyLump<bspDrawSurface_t, ibspDrawSurface_t>( (bspHeader_t*) header, LUMP_SURFACES, bspDrawSurfaces ); CopyLump<bspDrawSurface_t, ibspDrawSurface_t>( (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 ); CopyLump( (bspHeader_t*) header, LUMP_DRAWINDEXES, bspDrawIndexes );
@ -305,7 +305,7 @@ void PartialLoadIBSPFile( const char *filename ){
CopyLump<bspDrawSurface_t, ibspDrawSurface_t>( (bspHeader_t*) header, LUMP_SURFACES, bspDrawSurfaces ); CopyLump<bspDrawSurface_t, ibspDrawSurface_t>( (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 ); 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_LIGHTMAPS], bspLightBytes );
AddLump( file, header->lumps[LUMP_LIGHTGRID], std::vector<ibspGridPoint_t>( bspGridPoints.begin(), bspGridPoints.end() ) ); AddLump( file, header->lumps[LUMP_LIGHTGRID], std::vector<ibspGridPoint_t>( bspGridPoints.begin(), bspGridPoints.end() ) );
AddLump( file, header->lumps[LUMP_ENTITIES], bspEntData ); 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 ); AddLump( file, header->lumps[LUMP_DRAWINDEXES], bspDrawIndexes );
/* advertisements */ /* advertisements */

View File

@ -219,7 +219,7 @@ void LoadRBSPFile( const char *filename ){
CopyLump( (bspHeader_t*) header, LUMP_SURFACES, bspDrawSurfaces ); 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 ); CopyLump( (bspHeader_t*) header, LUMP_DRAWINDEXES, bspDrawIndexes );
@ -286,7 +286,7 @@ void WriteRBSPFile( const char *filename ){
AddLump( file, header->lumps[LUMP_LIGHTMAPS], bspLightBytes ); AddLump( file, header->lumps[LUMP_LIGHTMAPS], bspLightBytes );
AddLightGridLumps( file, header ); AddLightGridLumps( file, header );
AddLump( file, header->lumps[LUMP_ENTITIES], bspEntData ); 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 ); AddLump( file, header->lumps[LUMP_DRAWINDEXES], bspDrawIndexes );
/* emit bsp size */ /* emit bsp size */

View File

@ -300,7 +300,7 @@ static void write_json( const char *directory ){
} }
{ {
doc.RemoveAllMembers(); doc.RemoveAllMembers();
for_indexed( auto&& fog : Span( bspFogs, numBSPFogs ) ){ for_indexed( const auto& fog : bspFogs ){
rapidjson::Value value( rapidjson::kObjectType ); rapidjson::Value value( rapidjson::kObjectType );
value.AddMember( "shader", rapidjson::StringRef( fog.shader ), all ); value.AddMember( "shader", rapidjson::StringRef( fog.shader ), all );
value.AddMember( "brushNum", fog.brushNum, 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" ) ); const auto doc = load_json( StringOutputStream( 256 )( directory, "fogs.json" ) );
static std::vector<bspFog_t> items;
for( auto&& obj : doc.GetObj() ){ for( auto&& obj : doc.GetObj() ){
auto&& item = items.emplace_back(); auto&& item = bspFogs.emplace_back();
strcpy( item.shader, obj.value["shader"].GetString() ); strcpy( item.shader, obj.value["shader"].GetString() );
item.brushNum = obj.value["brushNum"].GetInt(); item.brushNum = obj.value["brushNum"].GetInt();
item.visibleSide = obj.value["visibleSide"].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" ) ); const auto doc = load_json( StringOutputStream( 256 )( directory, "DrawIndexes.json" ) );

View File

@ -2359,8 +2359,7 @@ Q_EXTERN std::vector<int> bspDrawIndexes;
Q_EXTERN std::vector<bspDrawSurface_t> bspDrawSurfaces; // MAX_MAP_DRAW_SURFS Q_EXTERN std::vector<bspDrawSurface_t> bspDrawSurfaces; // MAX_MAP_DRAW_SURFS
Q_EXTERN int numBSPFogs Q_ASSIGN( 0 ); Q_EXTERN std::vector<bspFog_t> bspFogs; // MAX_MAP_FOGS
Q_EXTERN bspFog_t bspFogs[ MAX_MAP_FOGS ];
Q_EXTERN int numBSPAds Q_ASSIGN( 0 ); Q_EXTERN int numBSPAds Q_ASSIGN( 0 );
Q_EXTERN bspAdvertisement_t bspAds[ MAX_MAP_ADVERTISEMENTS ]; Q_EXTERN bspAdvertisement_t bspAds[ MAX_MAP_ADVERTISEMENTS ];

View File

@ -411,17 +411,13 @@ void EmitBrushes( brushlist_t& brushes, int *firstBrush, int *numBrushes ){
*/ */
void EmitFogs( void ){ void EmitFogs( void ){
/* setup */
numBSPFogs = numMapFogs;
/* walk list */ /* walk list */
for ( int i = 0; i < numMapFogs; i++ ) for ( int i = 0; i < numMapFogs; i++ )
{ {
const fog_t& fog = mapFogs[i]; const fog_t& fog = mapFogs[i];
bspFog_t& bspFog = bspFogs[i]; bspFog_t& bspFog = bspFogs.emplace_back();
/* set shader */ /* set shader */
// copy and clear the rest of memory strcpy( bspFog.shader, fog.si->shader );
strncpy( bspFog.shader, fog.si->shader, sizeof( bspFog.shader ) );
/* global fog doesn't have an associated brush */ /* global fog doesn't have an associated brush */
if ( fog.brush == NULL ) { if ( fog.brush == NULL ) {