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 ){
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 )

View File

@ -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",

View File

@ -253,7 +253,7 @@ void LoadIBSPFile( const char *filename ){
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 );
@ -305,7 +305,7 @@ void PartialLoadIBSPFile( const char *filename ){
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 );
@ -362,7 +362,7 @@ void WriteIBSPFile( const char *filename ){
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_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 */

View File

@ -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 */

View File

@ -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<bspFog_t> 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" ) );

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 int numBSPFogs Q_ASSIGN( 0 );
Q_EXTERN bspFog_t bspFogs[ MAX_MAP_FOGS ];
Q_EXTERN std::vector<bspFog_t> bspFogs; // MAX_MAP_FOGS
Q_EXTERN int numBSPAds Q_ASSIGN( 0 );
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 ){
/* 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 ) {