From: Thomas Debesse Date: Mon, 11 Feb 2019 09:06:26 +0000 (+0100) Subject: Merge commit '2b85b7c20c20df677e30541c93b80725dc2277c9' into garux-merge X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=19992696033a496e5c0925e950a29dc23de49b47;p=xonotic%2Fnetradiant.git Merge commit '2b85b7c20c20df677e30541c93b80725dc2277c9' into garux-merge --- 19992696033a496e5c0925e950a29dc23de49b47 diff --cc tools/quake3/q3map2/main.c index 67798e1c,b3fe1cda..40a6d20a --- a/tools/quake3/q3map2/main.c +++ b/tools/quake3/q3map2/main.c @@@ -538,20 -1909,20 +533,20 @@@ int pk3BSPMain( int argc, char **argv ) } /* blocks */ - if ( !stricmp( token, "textures" ) ){ + if ( !Q_stricmp( token, "textures" ) ){ - parseEXblock ( EXpk3Textures, &EXpk3TexturesN, exName ); + parseEXblock ( ExTextures, &ExTexturesN, exName ); } - else if ( !stricmp( token, "shaders" ) ){ + else if ( !Q_stricmp( token, "shaders" ) ){ - parseEXblock ( EXpk3Shaders, &EXpk3ShadersN, exName ); + parseEXblock ( ExShaders, &ExShadersN, exName ); } - else if ( !stricmp( token, "shaderfiles" ) ){ + else if ( !Q_stricmp( token, "shaderfiles" ) ){ - parseEXblock ( EXpk3Shaderfiles, &EXpk3ShaderfilesN, exName ); + parseEXblock ( ExShaderfiles, &ExShaderfilesN, exName ); } - else if ( !stricmp( token, "sounds" ) ){ + else if ( !Q_stricmp( token, "sounds" ) ){ - parseEXblock ( EXpk3Sounds, &EXpk3SoundsN, exName ); + parseEXblock ( ExSounds, &ExSoundsN, exName ); } - else if ( !stricmp( token, "videos" ) ){ + else if ( !Q_stricmp( token, "videos" ) ){ - parseEXblock ( EXpk3Videos, &EXpk3VideosN, exName ); + parseEXblock ( ExVideos, &ExVideosN, exName ); } else{ Error( "ReadExclusionsFile: %s, line %d: unknown block name!\nValid ones are: textures, shaders, shaderfiles, sounds, videos.", exName, scriptline ); @@@ -561,32 -1932,131 +556,131 @@@ /* free the buffer */ free( buffer ); + for ( i = 0; i < ExTexturesN; i++ ){ + for ( j = 0; j < ExShadersN; j++ ){ - if ( !stricmp( ExTextures + i*65, ExShaders + j*65 ) ){ ++ if ( !Q_stricmp( ExTextures + i*65, ExShaders + j*65 ) ){ + break; + } + } + if ( j == ExShadersN ){ + strcpy ( ExPureTextures + ExPureTexturesN*65, ExTextures + i*65 ); + ExPureTexturesN++; + } + } + skipEXfile: if( dbg ){ - Sys_Printf( "\tEXpk3Textures....%i\n", EXpk3TexturesN ); - for ( i = 0; i < EXpk3TexturesN; i++ ) Sys_Printf( "%s\n", EXpk3Textures + i*65 ); - Sys_Printf( "\tEXpk3Shaders....%i\n", EXpk3ShadersN ); - for ( i = 0; i < EXpk3ShadersN; i++ ) Sys_Printf( "%s\n", EXpk3Shaders + i*65 ); - Sys_Printf( "\tEXpk3Shaderfiles....%i\n", EXpk3ShaderfilesN ); - for ( i = 0; i < EXpk3ShaderfilesN; i++ ) Sys_Printf( "%s\n", EXpk3Shaderfiles + i*65 ); - Sys_Printf( "\tEXpk3Sounds....%i\n", EXpk3SoundsN ); - for ( i = 0; i < EXpk3SoundsN; i++ ) Sys_Printf( "%s\n", EXpk3Sounds + i*65 ); - Sys_Printf( "\tEXpk3Videos....%i\n", EXpk3VideosN ); - for ( i = 0; i < EXpk3VideosN; i++ ) Sys_Printf( "%s\n", EXpk3Videos + i*65 ); + Sys_Printf( "\n\tExTextures....%i\n", ExTexturesN ); + for ( i = 0; i < ExTexturesN; i++ ) Sys_Printf( "%s\n", ExTextures + i*65 ); + Sys_Printf( "\n\tExPureTextures....%i\n", ExPureTexturesN ); + for ( i = 0; i < ExPureTexturesN; i++ ) Sys_Printf( "%s\n", ExPureTextures + i*65 ); + Sys_Printf( "\n\tExShaders....%i\n", ExShadersN ); + for ( i = 0; i < ExShadersN; i++ ) Sys_Printf( "%s\n", ExShaders + i*65 ); + Sys_Printf( "\n\tExShaderfiles....%i\n", ExShaderfilesN ); + for ( i = 0; i < ExShaderfilesN; i++ ) Sys_Printf( "%s\n", ExShaderfiles + i*65 ); + Sys_Printf( "\n\tExSounds....%i\n", ExSoundsN ); + for ( i = 0; i < ExSoundsN; i++ ) Sys_Printf( "%s\n", ExSounds + i*65 ); + Sys_Printf( "\n\tExVideos....%i\n", ExVideosN ); + for ( i = 0; i < ExVideosN; i++ ) Sys_Printf( "%s\n", ExVideos + i*65 ); } + /* can exclude pure textures right now, shouldn't create shaders for them anyway */ + for ( i = 0; i < pk3ShadersN ; i++ ){ + for ( j = 0; j < ExPureTexturesN ; j++ ){ - if ( !stricmp( pk3Shaders + i*65, ExPureTextures + j*65 ) ){ ++ if ( !Q_stricmp( pk3Shaders + i*65, ExPureTextures + j*65 ) ){ + *( pk3Shaders + i*65 ) = '\0'; + break; + } + } + } //Parse Shader Files + /* hack */ + endofscript = qtrue; + for ( i = 0; i < pk3ShaderfilesN; i++ ){ - qboolean wantShader = qfalse, wantShaderFile = qfalse; - char shadername[ 1024 ], lastwantedShader[ 1024 ]; + qboolean wantShader = qfalse, wantShaderFile = qfalse, ShaderFileExcluded = qfalse; + int shader; + char* reasonShader = NULL, reasonShaderFile = NULL; /* load the shader */ sprintf( temp, "%s/%s", game->shaderPath, pk3Shaderfiles + i*65 ); - LoadScriptFile( temp, 0 ); - + SilentLoadScriptFile( temp, 0 ); + if( dbg ) Sys_Printf( "\n\tentering %s\n", pk3Shaderfiles + i*65 ); + + /* do wanna le shader file? */ + for ( j = 0; j < ExShaderfilesN; j++ ){ - if ( !stricmp( ExShaderfiles + j*65, pk3Shaderfiles + i*65 ) ){ ++ if ( !Q_stricmp( ExShaderfiles + j*65, pk3Shaderfiles + i*65 ) ){ + ShaderFileExcluded = qtrue; + reasonShaderFile = ExShaderfiles + j*65; + break; + } + } /* tokenize it */ + /* check if shader file has to be excluded */ + while ( !ShaderFileExcluded ) + { + /* test for end of file */ + if ( !GetToken( qtrue ) ) { + break; + } + + /* does it contain restricted shaders/textures? */ + for ( j = 0; j < ExShadersN; j++ ){ - if ( !stricmp( ExShaders + j*65, token ) ){ ++ if ( !Q_stricmp( ExShaders + j*65, token ) ){ + ShaderFileExcluded = qtrue; + reasonShader = ExShaders + j*65; + break; + } + } + if ( ShaderFileExcluded ) + break; + for ( j = 0; j < ExPureTexturesN; j++ ){ - if ( !stricmp( ExPureTextures + j*65, token ) ){ ++ if ( !Q_stricmp( ExPureTextures + j*65, token ) ){ + ShaderFileExcluded = qtrue; + reasonShader = ExPureTextures + j*65; + break; + } + } + if ( ShaderFileExcluded ) + break; + + /* handle { } section */ + if ( !GetToken( qtrue ) ) { + break; + } + if ( strcmp( token, "{" ) ) { + Error( "ParseShaderFile: %s, line %d: { not found!\nFound instead: %s", + temp, scriptline, token ); + } + + while ( 1 ) + { + /* get the next token */ + if ( !GetToken( qtrue ) ) { + break; + } + if ( !strcmp( token, "}" ) ) { + break; + } + /* parse stage directives */ + if ( !strcmp( token, "{" ) ) { + while ( 1 ) + { + if ( !GetToken( qtrue ) ) { + break; + } + if ( !strcmp( token, "}" ) ) { + break; + } + } + } + } + } + + /* tokenize it again */ + SilentLoadScriptFile( temp, 0 ); while ( 1 ) { /* test for end of file */ @@@ -599,9 -2069,8 +693,8 @@@ /* do wanna le shader? */ wantShader = qfalse; for ( j = 0; j < pk3ShadersN; j++ ){ - if ( !stricmp( pk3Shaders + j*65, token) ){ + if ( !Q_stricmp( pk3Shaders + j*65, token) ){ - strcpy ( shadername, pk3Shaders + j*65 ); - *(pk3Shaders + j*65) = '\0'; + shader = j; wantShader = qtrue; break; } @@@ -651,18 -2120,18 +744,18 @@@ /* get an image */ GetToken( qfalse ); if ( token[ 0 ] != '*' && token[ 0 ] != '$' ) { - tex2list( pk3Textures, &pk3TexturesN, EXpk3Textures, &EXpk3TexturesN ); + tex2list( pk3Textures, &pk3TexturesN, ExTextures, &ExTexturesN ); } } - else if ( !stricmp( token, "animMap" ) || - !stricmp( token, "clampAnimMap" ) ) { + else if ( !Q_stricmp( token, "animMap" ) || + !Q_stricmp( token, "clampAnimMap" ) ) { GetToken( qfalse );// skip num while ( TokenAvailable() ){ GetToken( qfalse ); - tex2list( pk3Textures, &pk3TexturesN, EXpk3Textures, &EXpk3TexturesN ); + tex2list( pk3Textures, &pk3TexturesN, ExTextures, &ExTexturesN ); } } - else if ( !stricmp( token, "videoMap" ) ){ + else if ( !Q_stricmp( token, "videoMap" ) ){ GetToken( qfalse ); FixDOSName( token ); if ( strchr( token, "/" ) == NULL ){ @@@ -674,8 -2143,8 +767,8 @@@ goto away; } } - for ( j = 0; j < EXpk3VideosN; j++ ){ - if ( !Q_stricmp( EXpk3Videos + j*65, token ) ){ + for ( j = 0; j < ExVideosN; j++ ){ - if ( !stricmp( ExVideos + j*65, token ) ){ ++ if ( !Q_stricmp( ExVideos + j*65, token ) ){ goto away; } } @@@ -694,10 -2163,11 +787,11 @@@ ----------------------------------------------------------------- */ /* match surfaceparm */ - else if ( !stricmp( token, "surfaceparm" ) ) { + else if ( !Q_stricmp( token, "surfaceparm" ) ) { GetToken( qfalse ); - if ( !stricmp( token, "nodraw" ) ) { + if ( !Q_stricmp( token, "nodraw" ) ) { wantShader = qfalse; + *( pk3Shaders + shader*65 ) = '\0'; } } @@@ -707,31 -2177,33 +801,33 @@@ GetToken( qfalse ); /* ignore bogus paths */ - if ( stricmp( token, "-" ) && stricmp( token, "full" ) ) { + if ( Q_stricmp( token, "-" ) && Q_stricmp( token, "full" ) ) { strcpy ( temp, token ); sprintf( token, "%s_up", temp ); - tex2list( pk3Textures, &pk3TexturesN, EXpk3Textures, &EXpk3TexturesN ); + tex2list( pk3Textures, &pk3TexturesN, ExTextures, &ExTexturesN ); sprintf( token, "%s_dn", temp ); - tex2list( pk3Textures, &pk3TexturesN, EXpk3Textures, &EXpk3TexturesN ); + tex2list( pk3Textures, &pk3TexturesN, ExTextures, &ExTexturesN ); sprintf( token, "%s_lf", temp ); - tex2list( pk3Textures, &pk3TexturesN, EXpk3Textures, &EXpk3TexturesN ); + tex2list( pk3Textures, &pk3TexturesN, ExTextures, &ExTexturesN ); sprintf( token, "%s_rt", temp ); - tex2list( pk3Textures, &pk3TexturesN, EXpk3Textures, &EXpk3TexturesN ); + tex2list( pk3Textures, &pk3TexturesN, ExTextures, &ExTexturesN ); sprintf( token, "%s_bk", temp ); - tex2list( pk3Textures, &pk3TexturesN, EXpk3Textures, &EXpk3TexturesN ); + tex2list( pk3Textures, &pk3TexturesN, ExTextures, &ExTexturesN ); sprintf( token, "%s_ft", temp ); - tex2list( pk3Textures, &pk3TexturesN, EXpk3Textures, &EXpk3TexturesN ); + tex2list( pk3Textures, &pk3TexturesN, ExTextures, &ExTexturesN ); } /* skip rest of line */ GetToken( qfalse ); GetToken( qfalse ); } } + //exclude shader if ( wantShader ){ - for ( j = 0; j < EXpk3ShadersN; j++ ){ - if ( !Q_stricmp( EXpk3Shaders + j*65, shadername ) ){ + for ( j = 0; j < ExShadersN; j++ ){ - if ( !stricmp( ExShaders + j*65, pk3Shaders + shader*65 ) ){ ++ if ( !Q_stricmp( ExShaders + j*65, pk3Shaders + shader*65 ) ){ wantShader = qfalse; + *( pk3Shaders + shader*65 ) = '\0'; break; } } @@@ -780,8 -2259,8 +883,8 @@@ } } if ( *( pk3Shaders + i*65 ) == '\0' ) continue; - for ( j = 0; j < EXpk3TexturesN; j++ ){ - if ( !Q_stricmp( pk3Shaders + i*65, EXpk3Textures + j*65 ) ){ + for ( j = 0; j < ExTexturesN; j++ ){ - if ( !stricmp( pk3Shaders + i*65, ExTextures + j*65 ) ){ ++ if ( !Q_stricmp( pk3Shaders + i*65, ExTextures + j*65 ) ){ *( pk3Shaders + i*65 ) = '\0'; break; } @@@ -791,8 -2270,8 +894,8 @@@ //snds for ( i = 0; i < pk3SoundsN; i++ ){ - for ( j = 0; j < EXpk3SoundsN; j++ ){ - if ( !Q_stricmp( pk3Sounds + i*65, EXpk3Sounds + j*65 ) ){ + for ( j = 0; j < ExSoundsN; j++ ){ - if ( !stricmp( pk3Sounds + i*65, ExSounds + j*65 ) ){ ++ if ( !Q_stricmp( pk3Sounds + i*65, ExSounds + j*65 ) ){ *( pk3Sounds + i*65 ) = '\0'; break; }