From aa110638d4e3b975ead6703ab6a2e167ba59950f Mon Sep 17 00:00:00 2001 From: Garux Date: Sat, 6 Nov 2021 17:27:11 +0300 Subject: [PATCH] remove global std::size_t mapEntityNum; (not buildable) --- tools/quake3/q3map2/bsp.cpp | 37 ++++++++++++------------- tools/quake3/q3map2/convert_bsp.cpp | 24 ++++++++-------- tools/quake3/q3map2/map.cpp | 2 +- tools/quake3/q3map2/model.cpp | 17 ++++++------ tools/quake3/q3map2/q3map2.h | 9 ++---- tools/quake3/q3map2/surface.cpp | 22 +++++++-------- tools/quake3/q3map2/surface_foliage.cpp | 4 +-- tools/quake3/q3map2/writebsp.cpp | 9 +++--- 8 files changed, 57 insertions(+), 67 deletions(-) diff --git a/tools/quake3/q3map2/bsp.cpp b/tools/quake3/q3map2/bsp.cpp index d9a6b25b..92da6b36 100644 --- a/tools/quake3/q3map2/bsp.cpp +++ b/tools/quake3/q3map2/bsp.cpp @@ -259,12 +259,11 @@ static void FixBrushSides( entity_t *e ){ creates a full bsp + surfaces for the worldspawn entity */ -static void ProcessWorldModel(){ - entity_t *e; +static void ProcessWorldModel( entity_t& e ){ const char *value; /* sets integer blockSize from worldspawn "_blocksize" key if it exists */ - if( entities[ 0 ].read_keyvalue( value, "_blocksize", "blocksize", "chopsize" ) ) { /* "chopsize" : sof2 */ + if( e.read_keyvalue( value, "_blocksize", "blocksize", "chopsize" ) ) { /* "chopsize" : sof2 */ /* scan 3 numbers */ const int s = sscanf( value, "%d %d %d", &blockSize[ 0 ], &blockSize[ 1 ], &blockSize[ 2 ] ); @@ -276,12 +275,11 @@ static void ProcessWorldModel(){ Sys_Printf( "block size = { %d %d %d }\n", blockSize[ 0 ], blockSize[ 1 ], blockSize[ 2 ] ); /* sof2: ignore leaks? */ - const bool ignoreLeaks = entities[ 0 ].boolForKey( "_ignoreleaks", "ignoreleaks" ); + const bool ignoreLeaks = e.boolForKey( "_ignoreleaks", "ignoreleaks" ); /* begin worldspawn model */ - BeginModel(); - e = &entities[ 0 ]; - e->firstDrawSurf = 0; + BeginModel( e ); + e.firstDrawSurf = 0; /* ydnar: gs mods */ ClearMetaTriangles(); @@ -294,7 +292,7 @@ static void ProcessWorldModel(){ } /* build an initial bsp tree using all of the sides of all of the structural brushes */ - facelist_t faces = MakeStructuralBSPFaceList( entities[ 0 ].brushes ); + facelist_t faces = MakeStructuralBSPFaceList( e.brushes ); tree_t tree = FaceBSP( faces ); MakeTreePortals( tree ); FilterStructuralBrushesIntoTree( e, tree ); @@ -322,7 +320,7 @@ static void ProcessWorldModel(){ ClipSidesIntoTree( e, tree ); /* build a visible face tree (same thing as the initial bsp tree but after reducing the faces) */ - faces = MakeVisibleBSPFaceList( entities[ 0 ].brushes ); + faces = MakeVisibleBSPFaceList( e.brushes ); FreeTree( tree ); tree = FaceBSP( faces ); MakeTreePortals( tree ); @@ -394,7 +392,7 @@ static void ProcessWorldModel(){ } /* ydnar: fog hull */ - if ( entities[ 0 ].read_keyvalue( value, "_foghull" ) ) { + if ( e.read_keyvalue( value, "_foghull" ) ) { const auto shader = String64()( "textures/", value ); MakeFogHullSurfs( e, shader ); } @@ -434,7 +432,7 @@ static void ProcessWorldModel(){ } /* create the flare surface (note shader defaults automatically) */ - DrawSurfaceForFlare( mapEntityNum, origin, normal, color, flareShader, lightStyle ); + DrawSurfaceForFlare( e.mapEntityNum, origin, normal, color, flareShader, lightStyle ); } } } @@ -458,11 +456,10 @@ static void ProcessWorldModel(){ creates bsp + surfaces for other brush models */ -static void ProcessSubModel(){ +static void ProcessSubModel( entity_t& e ){ /* start a brush model */ - BeginModel(); - entity_t *e = &entities[ mapEntityNum ]; - e->firstDrawSurf = numMapDrawSurfs; + BeginModel( e ); + e.firstDrawSurf = numMapDrawSurfs; /* ydnar: gs mods */ ClearMetaTriangles(); @@ -541,21 +538,21 @@ static void ProcessModels(){ CreateMapFogs(); /* walk entity list */ - for ( mapEntityNum = 0; mapEntityNum < entities.size(); mapEntityNum++ ) + for ( size_t entityNum = 0; entityNum < entities.size(); ++entityNum ) { /* get entity */ - const entity_t& entity = entities[ mapEntityNum ]; + entity_t& entity = entities[ entityNum ]; if ( entity.brushes.empty() && entity.patches == NULL ) { continue; } /* process the model */ Sys_FPrintf( SYS_VRB, "############### model %zu ###############\n", bspModels.size() ); - if ( mapEntityNum == 0 ) { - ProcessWorldModel(); + if ( entityNum == 0 ) { + ProcessWorldModel( entity ); } else{ - ProcessSubModel(); + ProcessSubModel( entity ); } /* potentially turn off the deluge of text */ diff --git a/tools/quake3/q3map2/convert_bsp.cpp b/tools/quake3/q3map2/convert_bsp.cpp index f330af40..bff8b1de 100644 --- a/tools/quake3/q3map2/convert_bsp.cpp +++ b/tools/quake3/q3map2/convert_bsp.cpp @@ -947,9 +947,8 @@ int MergeBSPMain( Args& args ){ a stripped down ProcessModels */ static void PseudoCompileBSP( bool need_tree ){ - int models; + int models = 1; char modelValue[16]; - entity_t *entity; facelist_t faces; tree_t tree{}; @@ -957,30 +956,29 @@ static void PseudoCompileBSP( bool need_tree ){ numMapDrawSurfs = 0; BeginBSPFile(); - models = 1; - for ( mapEntityNum = 0; mapEntityNum < entities.size(); mapEntityNum++ ) + for ( size_t entityNum = 0; entityNum < entities.size(); ++entityNum ) { /* get entity */ - entity = &entities[ mapEntityNum ]; - if ( entity->brushes.empty() && entity->patches == NULL ) { + entity_t& entity = entities[ entityNum ]; + if ( entity.brushes.empty() && entity.patches == NULL ) { continue; } - if ( mapEntityNum != 0 ) { + if ( entityNum != 0 ) { sprintf( modelValue, "*%d", models++ ); - entity->setKeyValue( "model", modelValue ); + entity.setKeyValue( "model", modelValue ); } /* process the model */ Sys_FPrintf( SYS_VRB, "############### model %zu ###############\n", bspModels.size() ); - BeginModel(); + BeginModel( entity ); - entity->firstDrawSurf = numMapDrawSurfs; + entity.firstDrawSurf = numMapDrawSurfs; ClearMetaTriangles(); PatchMapDrawSurfs( entity ); - if ( mapEntityNum == 0 && need_tree ) { + if ( entityNum == 0 && need_tree ) { faces = MakeStructuralBSPFaceList( entities[0].brushes ); tree = FaceBSP( faces ); } @@ -991,7 +989,7 @@ static void PseudoCompileBSP( bool need_tree ){ } /* a minimized ClipSidesIntoTree */ - for ( const brush_t& brush : entity->brushes ) + for ( const brush_t& brush : entity.brushes ) { /* walk the brush sides */ for ( const side_t& side : brush.sides ) @@ -1020,7 +1018,7 @@ static void PseudoCompileBSP( bool need_tree ){ FilterStructuralBrushesIntoTree( entity, tree ); FilterDetailBrushesIntoTree( entity, tree ); - EmitBrushes( entity->brushes, &entity->firstBrush, &entity->numBrushes ); + EmitBrushes( entity.brushes, &entity.firstBrush, &entity.numBrushes ); EndModel( entity, tree.headnode ); } EndBSPFile( false ); diff --git a/tools/quake3/q3map2/map.cpp b/tools/quake3/q3map2/map.cpp index 756b34fb..05af398e 100644 --- a/tools/quake3/q3map2/map.cpp +++ b/tools/quake3/q3map2/map.cpp @@ -1362,7 +1362,7 @@ static void LoadEntityIndexMap( entity_t& e ){ } /* note it */ - Sys_FPrintf( SYS_VRB, "Entity %d (%s) has shader index map \"%s\"\n", e.mapEntityNum, e.classname(), indexMapFilename ); + Sys_FPrintf( SYS_VRB, "Entity %d (%s) has shader index map \"%s\"\n", e.mapEntityNum, e.classname(), indexMapFilename ); /* handle tga image */ if ( path_extension_is( indexMapFilename, "tga" ) ) { diff --git a/tools/quake3/q3map2/model.cpp b/tools/quake3/q3map2/model.cpp index 6be6abf4..5363691a 100644 --- a/tools/quake3/q3map2/model.cpp +++ b/tools/quake3/q3map2/model.cpp @@ -415,7 +415,7 @@ static void make_brush_sides( const Plane3f plane, const Plane3f (&p)[3], const buildBrush.sides[4].planenum = FindFloatPlane( reverse, 0, NULL ); } -static void ClipModel( int spawnFlags, float clipDepth, shaderInfo_t *si, const mapDrawSurface_t *ds, const char *modelName ){ +static void ClipModel( int spawnFlags, float clipDepth, shaderInfo_t *si, const mapDrawSurface_t *ds, const char *modelName, entity_t& entity ){ const int spf = ( spawnFlags & ( eClipFlags & ~eClipModel ) ); /* ydnar: giant hack land: generate clipping brushes for model triangles */ @@ -489,7 +489,7 @@ static void ClipModel( int spawnFlags, float clipDepth, shaderInfo_t *si, const /* prepare a brush */ buildBrush.sides.reserve( MAX_BUILD_SIDES ); - buildBrush.entityNum = mapEntityNum; + buildBrush.entityNum = entity.mapEntityNum; buildBrush.contentShader = si; buildBrush.compileFlags = si->compileFlags; buildBrush.contentFlags = si->contentFlags; @@ -966,9 +966,9 @@ default_CLIPMODEL: if ( CreateBrushWindings( buildBrush ) ) { AddBrushBevels(); //% EmitBrushes( buildBrush, NULL, NULL ); - brush_t& newBrush = entities[ mapEntityNum ].brushes.emplace_front( buildBrush ); + brush_t& newBrush = entity.brushes.emplace_front( buildBrush ); newBrush.original = &newBrush; - entities[ mapEntityNum ].numBrushes++; + entity.numBrushes++; } else{ Sys_Warning( "triangle (%6.0f %6.0f %6.0f) (%6.0f %6.0f %6.0f) (%6.0f %6.0f %6.0f) of %s was not autoclipped\n", @@ -988,7 +988,7 @@ default_CLIPMODEL: adds a picomodel into the bsp */ -void InsertModel( const char *name, int skin, int frame, const Matrix4& transform, const std::list *remaps, shaderInfo_t *celShader, int eNum, int castShadows, int recvShadows, int spawnFlags, float lightmapScale, int lightmapSampleSize, float shadeAngle, float clipDepth ){ +void InsertModel( const char *name, int skin, int frame, const Matrix4& transform, const std::list *remaps, shaderInfo_t *celShader, entity_t& entity, int castShadows, int recvShadows, int spawnFlags, float lightmapScale, int lightmapSampleSize, float shadeAngle, float clipDepth ){ int i, j; const Matrix4 nTransform( matrix4_for_normal_transform( transform ) ); const bool transform_lefthanded = MATRIX4_LEFTHANDED == matrix4_handedness( transform ); @@ -1138,7 +1138,7 @@ void InsertModel( const char *name, int skin, int frame, const Matrix4& transfor /* allocate a surface (ydnar: gs mods) */ ds = AllocDrawSurface( ESurfaceType::Triangles ); - ds->entityNum = eNum; + ds->entityNum = entity.mapEntityNum; ds->castShadows = castShadows; ds->recvShadows = recvShadows; @@ -1249,7 +1249,7 @@ void InsertModel( const char *name, int skin, int frame, const Matrix4& transfor /* set cel shader */ ds->celShader = celShader; - ClipModel( spawnFlags, clipDepth, si, ds, name ); + ClipModel( spawnFlags, clipDepth, si, ds, name, entity ); } } @@ -1410,7 +1410,6 @@ void AddTriangleModels( entity_t *eparent ){ /* insert the model */ - InsertModel( model, skin, frame, transform, &remaps, celShader, mapEntityNum, castShadows, recvShadows, spawnFlags, lightmapScale, lightmapSampleSize, shadeAngle, clipDepth ); + InsertModel( model, skin, frame, transform, &remaps, celShader, *eparent, castShadows, recvShadows, spawnFlags, lightmapScale, lightmapSampleSize, shadeAngle, clipDepth ); } - } diff --git a/tools/quake3/q3map2/q3map2.h b/tools/quake3/q3map2/q3map2.h index 0a6f579c..22d07805 100644 --- a/tools/quake3/q3map2/q3map2.h +++ b/tools/quake3/q3map2/q3map2.h @@ -1489,7 +1489,7 @@ void EndBSPFile( bool do_write ); void EmitBrushes( brushlist_t& brushes, int *firstBrush, int *numBrushes ); void EmitFogs(); -void BeginModel(); +void BeginModel( const entity_t& e ); void EndModel( entity_t *e, node_t *headnode ); @@ -1523,7 +1523,7 @@ tree_t FaceBSP( facelist_t& list ); /* model.c */ void assimp_init(); -void InsertModel( const char *name, int skin, int frame, const Matrix4& transform, const std::list *remaps, shaderInfo_t *celShader, int eNum, int castShadows, int recvShadows, int spawnFlags, float lightmapScale, int lightmapSampleSize, float shadeAngle, float clipDepth ); +void InsertModel( const char *name, int skin, int frame, const Matrix4& transform, const std::list *remaps, shaderInfo_t *celShader, entity_t& entity, int castShadows, int recvShadows, int spawnFlags, float lightmapScale, int lightmapSampleSize, float shadeAngle, float clipDepth ); void AddTriangleModels( entity_t *e ); @@ -1538,7 +1538,6 @@ void TidyEntitySurfaces( entity_t *e ); mapDrawSurface_t *CloneSurface( mapDrawSurface_t *src, shaderInfo_t *si ); bool IsTriangleDegenerate( bspDrawVert_t *points, int a, int b, int c ); void ClearSurface( mapDrawSurface_t *ds ); -void AddEntitySurfaceModels( entity_t *e ); mapDrawSurface_t *DrawSurfaceForSide( const entity_t *e, const brush_t& b, const side_t& s, const winding_t& w ); mapDrawSurface_t *DrawSurfaceForMesh( entity_t *e, parseMesh_t *p, mesh_t *mesh ); mapDrawSurface_t *DrawSurfaceForFlare( int entNum, const Vector3& origin, const Vector3& normal, const Vector3& color, const char *flareShader, int lightStyle ); @@ -1555,7 +1554,7 @@ void Fur( mapDrawSurface_t *src ); /* surface_foliage.c */ -void Foliage( mapDrawSurface_t *src ); +void Foliage( mapDrawSurface_t *src, entity_t& entity ); /* ydnar: surface_meta.c */ @@ -1799,8 +1798,6 @@ inline int sampleSize = DEFAULT_LIGHTMAP_SAMPLE_SIZE; /* lightmap sampl inline int minSampleSize = DEFAULT_LIGHTMAP_MIN_SAMPLE_SIZE; /* minimum sample size to use at all */ inline int sampleScale; /* vortex: lightmap sample scale (ie quality)*/ -inline std::size_t mapEntityNum; - inline std::vector mapplanes; /* mapplanes[ num ^ 1 ] will always be the mirror or mapplanes[ num ] */ /* nummapplanes will always be even */ inline MinMax g_mapMinmax; diff --git a/tools/quake3/q3map2/surface.cpp b/tools/quake3/q3map2/surface.cpp index f2c3a733..16c7bd4f 100644 --- a/tools/quake3/q3map2/surface.cpp +++ b/tools/quake3/q3map2/surface.cpp @@ -2719,7 +2719,7 @@ static void BiasSurfaceTextures( mapDrawSurface_t *ds ){ adds models to a specified triangle, returns the number of models added */ -static int AddSurfaceModelsToTriangle_r( mapDrawSurface_t *ds, const surfaceModel_t& model, bspDrawVert_t **tri ){ +static int AddSurfaceModelsToTriangle_r( mapDrawSurface_t *ds, const surfaceModel_t& model, bspDrawVert_t **tri, entity_t& entity ){ bspDrawVert_t mid, *tri2[ 3 ]; int max, n, localNumSurfaceModels; @@ -2811,7 +2811,7 @@ static int AddSurfaceModelsToTriangle_r( mapDrawSurface_t *ds, const surfaceMode } /* insert the model */ - InsertModel( model.model.c_str(), 0, 0, transform, NULL, ds->celShader, ds->entityNum, ds->castShadows, ds->recvShadows, 0, ds->lightmapScale, 0, 0, clipDepthGlobal ); + InsertModel( model.model.c_str(), 0, 0, transform, NULL, ds->celShader, entity, ds->castShadows, ds->recvShadows, 0, ds->lightmapScale, 0, 0, clipDepthGlobal ); /* return to sender */ return 1; @@ -2824,7 +2824,7 @@ static int AddSurfaceModelsToTriangle_r( mapDrawSurface_t *ds, const surfaceMode /* recurse to first triangle */ VectorCopy( tri, tri2 ); tri2[ max ] = ∣ - n = AddSurfaceModelsToTriangle_r( ds, model, tri2 ); + n = AddSurfaceModelsToTriangle_r( ds, model, tri2, entity ); if ( n < 0 ) { return n; } @@ -2833,7 +2833,7 @@ static int AddSurfaceModelsToTriangle_r( mapDrawSurface_t *ds, const surfaceMode /* recurse to second triangle */ VectorCopy( tri, tri2 ); tri2[ ( max + 1 ) % 3 ] = ∣ - n = AddSurfaceModelsToTriangle_r( ds, model, tri2 ); + n = AddSurfaceModelsToTriangle_r( ds, model, tri2, entity ); if ( n < 0 ) { return n; } @@ -2850,7 +2850,7 @@ static int AddSurfaceModelsToTriangle_r( mapDrawSurface_t *ds, const surfaceMode adds a surface's shader models to the surface */ -static int AddSurfaceModels( mapDrawSurface_t *ds ){ +static int AddSurfaceModels( mapDrawSurface_t *ds, entity_t& entity ){ int i, x, y, n, pw[ 5 ], r, localNumSurfaceModels, iterations; mesh_t src, *mesh, *subdivided; bspDrawVert_t centroid, *tri[ 3 ]; @@ -2906,7 +2906,7 @@ static int AddSurfaceModels( mapDrawSurface_t *ds ){ tri[ 2 ] = &ds->verts[ ( i + 1 ) % ds->numVerts ]; /* create models */ - n = AddSurfaceModelsToTriangle_r( ds, model, tri ); + n = AddSurfaceModelsToTriangle_r( ds, model, tri, entity ); if ( n < 0 ) { return n; } @@ -2948,7 +2948,7 @@ static int AddSurfaceModels( mapDrawSurface_t *ds ){ tri[ 0 ] = &mesh->verts[ pw[ r + 0 ] ]; tri[ 1 ] = &mesh->verts[ pw[ r + 1 ] ]; tri[ 2 ] = &mesh->verts[ pw[ r + 2 ] ]; - n = AddSurfaceModelsToTriangle_r( ds, model, tri ); + n = AddSurfaceModelsToTriangle_r( ds, model, tri, entity ); if ( n < 0 ) { return n; } @@ -2958,7 +2958,7 @@ static int AddSurfaceModels( mapDrawSurface_t *ds ){ tri[ 0 ] = &mesh->verts[ pw[ r + 0 ] ]; tri[ 1 ] = &mesh->verts[ pw[ r + 2 ] ]; tri[ 2 ] = &mesh->verts[ pw[ r + 3 ] ]; - n = AddSurfaceModelsToTriangle_r( ds, model, tri ); + n = AddSurfaceModelsToTriangle_r( ds, model, tri, entity ); if ( n < 0 ) { return n; } @@ -2980,7 +2980,7 @@ static int AddSurfaceModels( mapDrawSurface_t *ds ){ tri[ 0 ] = &ds->verts[ ds->indexes[ i ] ]; tri[ 1 ] = &ds->verts[ ds->indexes[ i + 1 ] ]; tri[ 2 ] = &ds->verts[ ds->indexes[ i + 2 ] ]; - n = AddSurfaceModelsToTriangle_r( ds, model, tri ); + n = AddSurfaceModelsToTriangle_r( ds, model, tri, entity ); if ( n < 0 ) { return n; } @@ -3014,7 +3014,7 @@ void AddEntitySurfaceModels( entity_t *e ){ /* walk the surface list */ for ( i = e->firstDrawSurf; i < numMapDrawSurfs; i++ ) - numSurfaceModels += AddSurfaceModels( &mapDrawSurfs[ i ] ); + numSurfaceModels += AddSurfaceModels( &mapDrawSurfs[ i ], *e ); } @@ -3122,7 +3122,7 @@ void FilterDrawsurfsIntoTree( entity_t *e, tree_t& tree ){ /* ydnar/sd: make foliage surfaces */ if ( !si->foliage.empty() ) { - Foliage( ds ); + Foliage( ds, *e ); } /* create a flare surface if necessary */ diff --git a/tools/quake3/q3map2/surface_foliage.cpp b/tools/quake3/q3map2/surface_foliage.cpp index f76bd1bb..a2dfe9b1 100644 --- a/tools/quake3/q3map2/surface_foliage.cpp +++ b/tools/quake3/q3map2/surface_foliage.cpp @@ -155,7 +155,7 @@ static void SubdivideFoliageTriangle_r( mapDrawSurface_t *ds, const foliage_t& f generates a foliage file for a bsp */ -void Foliage( mapDrawSurface_t *src ){ +void Foliage( mapDrawSurface_t *src, entity_t& entity ){ int i, j, x, y, pw[ 5 ], r, oldNumMapDrawSurfs; mapDrawSurface_t *ds; shaderInfo_t *si; @@ -255,7 +255,7 @@ void Foliage( mapDrawSurface_t *src ){ oldNumMapDrawSurfs = numMapDrawSurfs; /* add the model to the bsp */ - InsertModel( foliage.model.c_str(), 0, 0, matrix4_scale_for_vec3( Vector3( foliage.scale ) ), NULL, NULL, src->entityNum, src->castShadows, src->recvShadows, 0, src->lightmapScale, 0, 0, clipDepthGlobal ); + InsertModel( foliage.model.c_str(), 0, 0, matrix4_scale_for_vec3( Vector3( foliage.scale ) ), NULL, NULL, entity, src->castShadows, src->recvShadows, 0, src->lightmapScale, 0, 0, clipDepthGlobal ); /* walk each new surface */ for ( i = oldNumMapDrawSurfs; i < numMapDrawSurfs; i++ ) diff --git a/tools/quake3/q3map2/writebsp.cpp b/tools/quake3/q3map2/writebsp.cpp index 2d746b76..239efd79 100644 --- a/tools/quake3/q3map2/writebsp.cpp +++ b/tools/quake3/q3map2/writebsp.cpp @@ -476,14 +476,10 @@ void EmitFogs(){ sets up a new brush model */ -void BeginModel(){ +void BeginModel( const entity_t& e ){ MinMax minmax; MinMax lgMinmax; /* ydnar: lightgrid mins/maxs */ - /* get model and entity */ - bspModel_t& mod = bspModels.emplace_back(); - const entity_t& e = entities[ mapEntityNum ]; - /* bound the brushes */ for ( const brush_t& b : e.brushes ) { @@ -506,6 +502,9 @@ void BeginModel(){ minmax.extend( vert.xyz ); } + /* get model */ + bspModel_t& mod = bspModels.emplace_back(); + /* ydnar: lightgrid mins/maxs */ if ( lgMinmax.valid() ) { /* use lightgrid bounds */